如何使用句柄作为函数参数?

时间:2016-04-20 12:01:06

标签: c++ winapi

当我遇到问题时,我正在为win32应用程序编写代码,如何将句柄用作函数参数。例如,使用此功能:

void refreshWindow (HWND myWNDhandle)
{
    InvalidateRect(myWNDhandle, NULL, FALSE);
}

如果我传入" hwnd"作为参数并运行代码,如下所示:

refreshWindow (hwnd);

我会认为我的窗户会再次被涂漆,不幸的是我的窗户不会被打败。 我做错了什么?

1 个答案:

答案 0 :(得分:2)

机械上你的电话是完美的。因此,无论HWND本身是无效的,并且正如其他评论者所建议的那样,你应该断言IsWindow()来验证它,或者你正在成为窗口重绘的异步性质的牺牲品:

调用InvalidateRect只会将窗口标记为需要绘制,如果没有其他更高优先级的事件或消息,后续调用GetMessage将生成绘制消息以绘制窗口过程

通常情况下,想要立即刷新窗口内容的方法,通过调用InvalidateRect跟随调用UpdateWindow - 这将确保在返回之前重新绘制窗口。