case WM_MOUSEMOVE:
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);
hwnd = ChildWindowFromPoint(hwndDlg,pt);
return TRUE;
case WM_TIMER:
//GetWindowText(hwnd,aa,100);
wsprintf(aa,"%d",hwnd);
SendDlgItemMessage(hwndDlg,IDC_EDIT1,WM_SETTEXT,0,(LPARAM)aa);
break;结果发现在对话框中显示的都是父窗口的句柄,而子窗口的句柄取不出来,怎么回事呢?那ChildWindowFromPoint和csdn上说的就不一样了。
pt.x = LOWORD(lParam);
pt.y = HIWORD(lParam);
hwnd = ChildWindowFromPoint(hwndDlg,pt);
return TRUE;
case WM_TIMER:
//GetWindowText(hwnd,aa,100);
wsprintf(aa,"%d",hwnd);
SendDlgItemMessage(hwndDlg,IDC_EDIT1,WM_SETTEXT,0,(LPARAM)aa);
break;结果发现在对话框中显示的都是父窗口的句柄,而子窗口的句柄取不出来,怎么回事呢?那ChildWindowFromPoint和csdn上说的就不一样了。
1.窗口坐标必须转换成屏幕坐标
2.在对话框中,鼠标移到子窗口上时,主窗口不会再响应WM_MOUSEMOVE消息
SetCapture();
记得在适当的时候ReleaseCapture();