我想在窗口上动态画一条线!!我是这么写的:.......
case WM_PAINT:
......
for(i=0;i<400;i++)
{
lineto(hdc,i,i);
sleep(10);
}
.........
用sleep是想产生一个动画效果,但是我发现在运行的时候,窗口不能响应其他操作,连关闭也不行,要等到这个循环结束了,才能进行其他操作,是不是因为用了sleep的关系??
那如果我既想实现上述功能,又想在运行期间窗口可以响应其他操作,请问应该怎么做?
case WM_PAINT:
......
for(i=0;i<400;i++)
{
lineto(hdc,i,i);
sleep(10);
}
.........
用sleep是想产生一个动画效果,但是我发现在运行的时候,窗口不能响应其他操作,连关闭也不行,要等到这个循环结束了,才能进行其他操作,是不是因为用了sleep的关系??
那如果我既想实现上述功能,又想在运行期间窗口可以响应其他操作,请问应该怎么做?
解决方案 »
- CListView如何让每一行是可编辑的文本或者一个下拉列表?
- 为何RegOpenKey(Ex)会失败?
- 用GDI打印,为什么我的文本打印程序在不同的打印机上打印的位置不一样?
- RealOne播放文件时,抓屏时图像无法抓取到?RealOne是怎么个播放机制,要怎么才能抓取到?
- ->为什么用moveWindow函数不能控制控件的大小呢?
- 用ODBC API编程时遇到的错误警告
- 第一次提问,不知道有效没有
- 请问如何检测系统所安装的NIC?
- 高难度!可否屏蔽IOCP BindIoCompletionCallback MySOCKET IOWorkerThead回调
- VC编写的COM组件与VB相比有何优点?
- 这是为什么,在创建IE工具栏时不可以用OnCreate
- 请问如何用钩子截获关机消息(WM_QUERYENDSESSION和WM_ENDSESSION)?
2、放在 Thread 里。
响应WM_TIMER消息:OnTimer函数:
{lineto();
}
最后KillTimer();
for(int i = 0; i < 100 ; i++)
{
if (::PeekMessage(&Message,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&Message);
::DispatchMessage(&Message);
}
Sleep(100);
}
符合你的要求吗?
如果不明白
请给我发短消息
请附: 帖子的地址
或根据http://www.vcshare.net上的联系方式与我联系
HANDLE handle;
DWORD threadId;
handle = CreateThread(NULL, //create worker thread.
0,
ThreadFunc, //thread process function
(LPVOID)1,
0,
&threadId);if(handle != NULL)
CloseHandle(handle); //close handle thread.
else
MessageBox(hwnd,"Thread create defeated!","Info",MB_OK);
//thread process function.
DWORD WINAPI ThreadFunc(LPVOID lParam)
{
for(int i=0;i<100;i++)
{
LineTo(hwnd,i,i);
Sleep(100);
}
return 0;
}