【发布时间】:2014-04-12 05:37:30
【问题描述】:
我的 win32 GUI 内容每秒都会更改一次,但除非手动移动窗口,否则它不会显示更新。我试图每秒弹出一个消息框以触发窗口刷新并且它起作用了。因此,它证明我的内容确实发生了变化,但窗口没有更新。 我希望窗口刷新而不每次都弹出消息框,是否有用于此的窗口功能?谢谢
case WM_PAINT:
RECT fingerprintSection;
fingerprintSection.left=500;
fingerprintSection.top=300;
fingerprintSection.bottom=540;
fingerprintSection.right=660;
wmId = LOWORD(wParam);
hdc = BeginPaint(hWnd, &ps);
refresh=!refresh;
if((start==true)&&(refresh==true)&&(stop!=true))
{
windowName = MultiByteStringToWideString(name1, CP_ACP);
LoadAndBlitBitmap(windowName.c_str(), hdc,500,0);//loading a picture that doesnt change
fingerprint();
LoadAndBlitBitmap(TEXT("outresized.bmp"), hdc,500,300);//loading a picture that constantly change
refresh=!refresh;
//RedrawWindow(hWnd,&fingerprintSection,NULL,RDW_INTERNALPAINT|RDW_VALIDATE|RDW_UPDATENOW|RDW_NOCHILDREN);
InvalidateRect( hWnd, &fingerprintSection, TRUE );
}
EndPaint(hWnd, &ps);
break;
【问题讨论】:
-
可以使用RedrawWindow功能:msdn.microsoft.com/en-us/library/windows/desktop/…
-
@inixsoftware,我尝试了函数 InvalidateRect 并加载 blitmap 以在循环中再次绘制它。它提供与 RedrawWindow 相同的东西吗?
-
应该的。它将向 WM_REPAINT 发送消息以强制它重新绘制
-
=( 窗口已重绘,但它只是不显示更新,除非它被移动或消息框将其唤醒。就像每次都必须按 f5
-
这个功能怎么样? WM_SHOWWINDOW
标签: c++ winapi refresh win32gui