case WM_LBUTTONDOWN: 无效
时间: 2024-02-04 10:02:30 浏览: 127
a-dragon-run-with-the-mouse.rar_run_site:www.pudn.com
如果你在窗口过程中添加了case WM_LBUTTONDOWN语句,但是并没有触发相应的处理代码,可能是因为你没有在创建窗口时注册窗口类的时候指定窗口过程函数。
在使用CreateWindow函数创建窗口时,需要指定窗口类的名称、窗口标题、窗口样式等参数,其中一个重要的参数是窗口过程函数指针。窗口过程函数指针用来指定窗口创建后接收消息的函数,如果不指定,则无法接收消息。
下面是一个示例代码,演示如何注册窗口类并指定窗口过程函数:
```
// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_LBUTTONDOWN:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
// 处理鼠标左键点击消息
// TODO: 在这里编写相应的处理代码
break;
}
// 其他消息处理代码...
}
// 默认消息处理
return DefWindowProc(hWnd, message, wParam, lParam);
}
// 注册窗口类并创建窗口
HWND CreateMainWindow(HINSTANCE hInstance)
{
// 定义窗口类
WNDCLASS wc = {};
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc; // 指定窗口过程函数
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(nullptr, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = L"MainWindow";
// 注册窗口类
RegisterClass(&wc);
// 创建窗口
HWND hWnd = CreateWindow(L"MainWindow", L"My Window", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, nullptr, nullptr, hInstance, nullptr);
return hWnd;
}
```
在这个示例代码中,我们在注册窗口类时指定了窗口过程函数指针为WndProc,这样在创建窗口时就会自动使用WndProc函数来接收消息。如果你没有指定窗口过程函数指针,或者指定了错误的函数指针,就会导致窗口无法接收消息。
阅读全文