【发布时间】:2020-01-16 11:03:52
【问题描述】:
我正在使用 win32 创建一个带有自定义标题栏和边框的窗口。我的问题是,当我使用 WM_NCHITTEST WM_LBUTTONDOWN 时,点击事件不会触发。当我不使用WM_NCHITTEST 时,我会收到点击事件。我没有收到任何错误。
我已经尝试删除WM_NCHITTEST 中的代码,所以我只删除了return 0。我尝试删除 WM_NCHITTEST 然后 WM_LBUTTONDOWN 工作,但我需要两者都工作。
//Declaring before switch
int x, y;
RECT rect;
int iTitlebarY = 20;
case WM_NCHITTEST: {
GetWindowRect(hwnd, &rect);
x = GET_X_LPARAM(lParam);
y = GET_Y_LPARAM(lParam);
if (y <= rect.top + iTitlebarY) {
return HTCAPTION;
}
//Some more code for resizing...
return 0;
}
case WM_LBUTTONDOWN:
//Never gets triggered
//Do something...
我预计我会收到鼠标点击,因为当我不使用 WM_NCHITTEST 时会收到。
【问题讨论】:
-
这里需要
DefWindowProc函数返回的返回值,或者有时返回HTCLIENT。WM_LBUTTONDOWN只会在HTCLIENT被WM_NCHITTEST返回但你永远不会返回时出现
标签: c++ windows winapi click window