WEB开发网
开发学院软件开发VC VC++部件库中浮动菜单部件的解析及应用 阅读

VC++部件库中浮动菜单部件的解析及应用

 2010-08-22 20:48:33 来源:WEB开发网   
核心提示:二、时间码定时CWnd::SetTimer函数可设置一个系统时间码,并指定每经过一定的时间间隔使Windows系统发送一个WM_TIMER消息到窗口的消息队列中,VC++部件库中浮动菜单部件的解析及应用(2),窗口在每当接收到相应的WM_TIMER消息时做一定的处理,便实现了定时处理,结束操作if (定时操作完成)bD

二、时间码定时

CWnd::SetTimer函数可设置一个系统时间码,并指定每经过一定的时间间隔使Windows系统发送一个WM_TIMER消息到窗口的消息队列中。窗口在每当接收到相应的WM_TIMER消息时做一定的处理,便实现了定时处理。

通常应在窗口的消息循环中接受和处理WM_TIMER消息,这样将很难编制通用的定时操作。通用的定时操作应将定时处理封装在一个函数中,而不与其它的代码纠缠在一起。笔者实现这一技术的技巧是,在循环操作中截获窗口消息,如消息为指定的时间码消息,则进行定时处理;否则分发消息给窗口消息处理机制。如果定时操作已结束,则修改循环标志,退出循环。具体的代码如下:....................................
//设置时间码,pWnd为处理定时操作的窗口对象指针
pWnd- >SetTimer(0x100, uTimeOut, NULL);
//屏蔽鼠标操作,使定时操作不受影响
pWnd- >SetCapture();
//开始定时操作
BOOL bDone = FALSE;
MSG msg;
while (! bDone)
{
if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_TIMER && msg. WParam == 0x100)
{
.......................
定时操作代码
.......................
//如定时操作完成,则设置循环标志,结束操作
if (定时操作完成)
bDone = TRUE;
}
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
//释放鼠标
::ReleaseCapture();
//删除时间码
pWnd- >KillTimer(0x100);
................................

函数PeekMessage截获窗口消息,TranslateMessage和DispatchMessage函数解释和分发除指定时间码消息之外的所有消息,以避免丢失消息。

上一页  1 2 3 4  下一页

Tags:VC 部件 浮动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接