My program is a chromeless window and I want to move the window when user drag any part of my dialog. Once WM_SYSCOMMAND is used, all subsequent mouse events are lost.
First I wrote a program to capture the mouse events and all working fine with 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;
}
Then I change onMouseDown above to,
LRESULT OnMouseDown ( UINT uKeys, CPoint pt ) {
print ("on mouse down");
this->SendMessageW(WM_SYSCOMMAND, SC_MOVE|0x0002);
return 0;
}
The drag is working and the windows move along with the mouse. However, OnMouseUp event is no longer fired.
Tried many different approach using WM_NCHITTEST, or ProcessMessage setHandled to true/false without success.
Much appreciate if anyone has any suggestions :)
WM_NCHITTEST
is the appropriate solution. You didn't post the code you tried, so I can't tell what might be wrong with it. – Relentless