我希望在创建窗口时使窗口无效。我怎样才能做到这一点?在WM_CREATE期间调用InvalidateRect不起作用。
问题是我在WM_CREATE中调用SetWindowLongPtr并设置GWLP_USERDATA。 WM_PAINT在USER_DATA中查找一些指针,但是第一次收到WM_PAINT时,数据显然仍然存在,所以它会绘制我的东西。
还试过这个:
#define MyDefinedMsg (WM_APP+1)
//...//
case WM_CREATE:
//...//
SetWindowLongPtr(hWnd,GWLP_USERDATA,ptr);
PostMessage(hWnd,MyDefinedMsg,0,0);
break;
case MyDefinedMsg:
InvalidateRect(hWnd,NULL,TRUE);
break;
但没有用。
提前致谢
答案 0 :(得分:3)
WM_CREATE/WM_SIZE/WM_PAINT
等)之后到达。如果您的绘画由于GWLP_USERDATA为NULL而失败,那么还会发生其他事情......
答案 1 :(得分:1)
在::UpdateWindow(...)
致电后尝试::CreateWindow(...)
,而不是发送您的信息。