2013-04-21 226 views
0

我在win32 C++中制作了一个小游戏,工作正常,但我遇到了一些闪烁的按钮。 我猜测它与我经常发送WN_PAINT的事实有关。win32按钮保持闪烁

InvalidateRect(hwnd, NULL, false); 
UpdateWindow(hwnd); 

我与CreateWindow的()这样的

CreateWindow(TEXT("button"), TEXT(BTN_SAVE), WS_VISIBLE | WS_CHILD, 
      client.right - offset[1] - 170, client.bottom - offset[3], 
      80, 25, hwnd, (HMENU)ID_BTN_SAVE, NULL, NULL); 

有没有人有这个问题的按钮?有什么方法可以修复它吗?

+2

你不应该送'WM_PAINT'直接,而应该无效要重绘窗口的一部分。 – 2013-04-21 09:31:14

+0

我这样做,每次我需要更新的东西 InvalidateRect(hwnd,NULL,false); UpdateWindow(hwnd); – 2013-04-21 09:32:40

+0

然后背景擦除应该不会成为问题,因为您在调用'InvalidateRect()'时将'bErase'作为'false'传递给了'InvalidateRect()'。也许你的绘图程序在整个客户区执行'FillRect()'或类似的东西? – 2013-04-21 09:35:05

回答