私のプログラムはクロムレス ウィンドウであり、ユーザーがダイアログの任意の部分をドラッグしたときにウィンドウを移動したいと考えています。WM_SYSCOMMAND を使用すると、その後のすべてのマウス イベントが失われます。
最初に、マウス イベントをキャプチャするプログラムを作成し、すべて WTL で正常に動作しました。
BEGIN_MSG_MAP(CMainDlg)
MSG_WM_LBUTTONUP(OnMouseUp)
MSG_WM_LBUTTONDOWN(OnMouseDown)
....
LRESULT OnMouseDown ( UINT uKeys, CPoint pt ) {
print ("on mouse down");
return 0;
}
LRESULT OnMouseUp ( UINT uKeys, CPoint pt ) {
print ("on mouse up");
return 0;
}
次に、上記の onMouseDown を次のように変更します。
LRESULT OnMouseDown ( UINT uKeys, CPoint pt ) {
print ("on mouse down");
this->SendMessageW(WM_SYSCOMMAND, SC_MOVE|0x0002);
return 0;
}
ドラッグが機能し、ウィンドウがマウスと一緒に移動します。ただし、OnMouseUp イベントは発生しなくなりました。
WM_NCHITTEST、または ProcessMessage setHandled を true/false に使用してさまざまなアプローチを試みましたが、成功しませんでした。
誰かが何か提案があれば大歓迎です:)