by 7 » 2006年4月26日(水) 17:37
てふろんさん さんが書きました:RealChildWindowFromPoint の第二引数は POINT構造体 の値渡しかと。
よって Int64 か QWord に置き換えてあげる必要があるような気がします。
> Dim uHitTest As Qword
> uHitTest = ptHitTest.x or ( ptHitTest.y << 32 )
> hHit = fnRealWndFromPoint(pParent,uHitTest)
とすれば動いてくれるような気がします。
これでもできなくて悩んでいた所、グループボックスの中のActiveBasicで言う「通知」にチェックが入ってないスタティックコントロールは感知できないってことが分かりました...。
他のコントロールは取得できていました。
Int64,QWord がActiveBasicになかったら使えなかったんでしょうかね。
ゲストさん さんが書きました:なので、こうしてみてください。
Declare Function RealChildWindowFromPoint Lib "user32" _
(hWndParent As HWND, _
xPoint As Long, _
yPoint As Long) As HWND
こういう風に宣言できたんですか!これが分かってれば悩むことも無かったかもしれませんね。
てふろんさん、ゲストさん、ありがとうございました。
[quote="てふろんさん"]RealChildWindowFromPoint の第二引数は POINT構造体 の値渡しかと。
よって Int64 か QWord に置き換えてあげる必要があるような気がします。
> Dim uHitTest As Qword
> uHitTest = ptHitTest.x or ( ptHitTest.y << 32 )
> hHit = fnRealWndFromPoint(pParent,uHitTest)
とすれば動いてくれるような気がします。[/quote]
これでもできなくて悩んでいた所、グループボックスの中のActiveBasicで言う「通知」にチェックが入ってないスタティックコントロールは感知できないってことが分かりました...。
他のコントロールは取得できていました。
[hide=こんな風にしました][code]Dim ptCooChild As QWord
ScreenToClient(pParent,ptHitTest)
memcpy(VarPtr(ptCooChild),VarPtr(ptHitTest),SizeOf(Long)*2)
hHit=fnRealWndFromPoint(pParent,ptCooChild)[/code][/hide]
Int64,QWord がActiveBasicになかったら使えなかったんでしょうかね。
[hide=と思ったら出来ました][code]Dim ptCooChild As VoidPtr
ScreenToClient(pParent,ptHitTest)
ptCooChild=malloc(SizeOf(Long)*2)
memcpy(ptCooChild,VarPtr(ptHitTest),SizeOf(Long)*2)
hHit=fnRealWndFromPoint(pParent,ptCooChild)
free(ptCooChild)[/code][/hide]
[quote="ゲストさん"]なので、こうしてみてください。
Declare Function RealChildWindowFromPoint Lib "user32" _
(hWndParent As HWND, _
xPoint As Long, _
yPoint As Long) As HWND[/quote]
こういう風に宣言できたんですか!これが分かってれば悩むことも無かったかもしれませんね。
てふろんさん、ゲストさん、ありがとうございました。