16,372
社区成员




// 代码片段,i 累加到一定程度退出
MSG msg;
int i = 0 ;
while (TRUE) {
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT)
break ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
} else {
// 做你想做的事情
// 但是千万不能Sleep 长时间哦
// 这里的处理时间也要很短,因为和上面的消息loop 是串行处理
// 但是可以连续的处理,比如 i ++
if (i ++ < 0xfffffffUL)
break;
}
}
if (msg.message == WM_QUIT)
pdlg->extCancle (); // 这里处理退出的消息
CProgressCtrl progress ;
int total_len = mci.getlen ();
int cur_pos = 0;
progress.Create (WS_CHILD,rect,&pdlg->m_ItemList,0x9900);
progress.SetRange32 (0,total_len);
progress.ShowWindow (SW_SHOW);
MSG msg;
while (TRUE) {
if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT)
break ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
} else {
// do what you want
cur_pos = mci.getpos ();
if (cur_pos >= total_len)
break;
else
progress.SetPos (cur_pos);
}
}
mci.stop ();
mci.close ();
if (msg.message == WM_QUIT)
pdlg->extCancle ();
MSG msg;
if (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}