らんだむな記憶

blogというものを体験してみようか!的なー

はめきん(8)

あれ?Spy++で見ると、
[D3DWindower]

<001684> 00060516 S WM_SETCURSOR hwnd:00060516 nHittest:HTCLIENT wMouseMsg:WM_LBUTTONDOWN
<001685> 00060516 R WM_SETCURSOR fHaltProcessing:False
<001686> 00060516 P WM_LBUTTONDOWN fwKeys:MK_LBUTTON xPos:325 yPos:413
...
<001705> 00060516 S WM_SETCURSOR hwnd:00060516 nHittest:HTCLIENT wMouseMsg:WM_LBUTTONUP
<001706> 00060516 R WM_SETCURSOR fHaltProcessing:False
<001707> 00060516 P WM_LBUTTONUP fwKeys:0000 xPos:325 yPos:413

なのに、
[DxWnd]

<000139> 000704E8 S WM_MOUSEACTIVATE hwndTopLevel:000704E8 nHittest:HTCAPTION uMsg:WM_LBUTTONDOWN
<000140> 000704E8 R WM_MOUSEACTIVATE fuActivate:MA_NOACTIVATE
<000141> 000704E8 S WM_SETCURSOR hwnd:000704E8 nHittest:HTCAPTION wMouseMsg:WM_LBUTTONDOWN
<000142> 000704E8 R WM_SETCURSOR fHaltProcessing:False
<000143> 000704E8 P WM_NCLBUTTONDOWN nHittest:HTCAPTION xPos:407 yPos:33
...
<000162> 000704E8 P WM_LBUTTONUP fwKeys:0000 xPos:357 yPos:-17

だぞ??おぃ、WM_LBUTTONDOWNはどこいったんだ!?
D3DWindowerの「特殊キー」云々はまた別の問題か?無効化するとキーボード操作が届かない。
んー。WM_LBUTTONDOWNに反応して「Space」を生成しているのかなぁ...。

非クライアントエリアのマウスメッセージを見ると、WM_NCLBUTTONDOWNの内容としては、非クライアント領域、ここではタイトルバーをクリックしたと思われているようだ。
WM_ACTIVATEをreceiveする前にWM_SETCURSORをSendMessageしているのがまずいのかもしれない。これどーすればいーんだろう...。雑な対処するなら、WM_LBUTTONUPを受けた時にさくっとWM_LBUTTONDOWNを生成して飛ばせば、上記のログ的には動きそうだが... それだとキーダウンで保持している場合をシミュレートできないしなぁ...。