c++ 创建窗口如何给回调程序传参
时间: 2024-02-23 14:59:40 浏览: 98
使非mfc窗口程序的窗口回调过程成为c++类的成员函数
5星 · 资源好评率100%
在C++中创建窗口并给回调函数传递参数可以使用SetWindowLongPtr函数。该函数可以设置窗口的扩展风格,其中一个参数即可用于传递参数给回调函数。
下面是一个示例代码:
```c++
// 定义回调函数
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
// 通过dwRefData获取传递的参数
int myParam = (int)dwRefData;
// 处理消息
// ...
}
// 创建窗口并设置回调函数
HWND hwnd = CreateWindowEx(
0, // 扩展风格
"MyWindowClass", // 窗口类名
"My Window", // 窗口标题
WS_OVERLAPPEDWINDOW, // 窗口风格
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, // 窗口位置和大小
NULL, // 父窗口句柄
NULL, // 菜单句柄
hInstance, // 应用程序实例句柄
NULL // 附加参数
);
// 通过SetWindowLongPtr设置回调函数的参数
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)myParam);
// 注册子类以便使用SetWindowSubclass
SetWindowSubclass(hwnd, WindowProc, 0, (DWORD_PTR)myParam);
```
在上面的示例中,我们使用SetWindowLongPtr函数将参数myParam传递给回调函数。在回调函数中,我们可以使用dwRefData参数获取传递的参数。
阅读全文