回 帖 发 新 帖 刷新版面

主题:窗口中带有时间性显示问题

下面的窗口过程语句是想在窗口中先显示字符串s1,然后过2秒显示字符串s2。可是执行程序后,首先创建了一个空白的客户区窗口,然后过了2秒一起显示了字符串s1和s2.不知道是什么原因?

LRESULT CALLBACK wndproc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)
{HDC hdc;
PAINTSTRUCT ps;
RECT rect;
TCHAR *s1=TEXT("ABC"),*s2=TEXT("XYZ");
        int size=strlen(s2);

switch(message)
{case WM_PAINT:

                    hdc=BeginPaint(hwnd,&ps);
                    GetClientRect(hwnd,&rect);
                
  DrawText(hdc,s1,-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
  Sleep(2000);   
  TextOut(hdc,0,0,s2,size);
  EndPaint(hwnd,&ps);

  break;
  case WM_DESTROY:PostQuitMessage(0);
                                     break;


default:return DefWindowProc(hwnd,message,wparam,lparam);
}
return 0;}

回复列表 (共3个回复)

沙发

BeginPaint
.
. 画图的代码
.
EndPaint

图形是在 EndPaint 执行完以后再现实的,如果想实现楼主期望的效果,应该用定时器.

板凳

有没有什么函数能精确到毫秒?我想编写一个码表的程序

3 楼

定时器就是 ms 级的, 1000ms = 1sec
但是由于一定的限制,这个东西也不精确...

我来回复

您尚未登录,请登录后再回复。点此登录或注册