在GetDlgItem(IDC_TISHI_STATIC)->SetWindowText("文字");之后
用Sleep(4000);
就有可能不及时显示上述文字??怎么解决呢???
用Sleep(4000);
就有可能不及时显示上述文字??怎么解决呢???
解决方案 »
- CArray<CPoint,CPoint> ptArray;
- 向前辈们学习.......同时再次问一个有点奇怪的问题~~嘿嘿,别笑我~~~
- MFC如何联接ACCESS数据库
- 询问最好的多语言解决方案?
- _T()是什么???
- 怎样得到远程主机dns名和netbios名??
- 1.类似于mediaplayer的皮肤(skin)是如何实现的?2.类似于qq的“我的好友”、“陌生人”和“黑名单”那样的界面如何实现的?
- 一个关于Edit的问题?
- 重载操作符问题
- 我不知道给这题10合适不合适。给多了我怕自已就没了。(呵,呵,让各位笑话了不是?)
- datagrid对应的是那个dll?我想使用这个控件,在vc中怎么添加进来?谢谢
- 用API和设备环境做GDI绘图比如绘菜单或界面一般有几个步骤?
Windows的应用程序是消息驱动的
SetWindowText操作实际上是给窗口发送一个WM_SETTEXT消息
而此时Sleep(4000)的时候还没有到达GetMessage
解决的办法自己想吧,呵呵
如果用Sleep(4000);
之前向文本框发送了WM_SETTEXT消息,窗口处理函数可能没来得及处理,然后就执行了
Sleep函数,这样界面线程可能被阻塞,导致没有反映,在4秒之后,才看到变化结果。可以创建一个工作者线程,用线程就可以很好的解决这一点:UINT MyThread(LPVOID pParam)
{
CGraphictestDlg *pDlg=(CGraphictestDlg *)pParam;
pDlg->GetDlgItem(IDC_EDIT1)->SetWindowText("aa");
Sleep(4000);
return 0;
}void CGraphictestDlg::OnButtonTest()
{
AfxBeginThread(MyThread,this);
}可以看到,文本马上就会变化,而不是在4秒之后才变化。
GetDlgItem(IDC_TISHI_STATIC)->SetWindowText("文字");
GetWindow();
Sleep(4000);
{
DWORD dwStart = GetTickCount();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = GetTickCount();
} while((dwEnd - dwStart) <= milliseconds);
}