首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

PeekMessage的使用,该如何处理

2012-01-11 
PeekMessage的使用程序中这样一段代码:voidCComputeDlg::OnTimer(UINTnIDEvent){CProgressCtrl*pBar(CPro

PeekMessage的使用
程序中这样一段代码:      
    void       CComputeDlg::OnTimer(UINT       nIDEvent)      
    {      
                    CProgressCtrl*       pBar       =       (CProgressCtrl*)       GetDlgItem(IDC_PROGRESS1);      
    pBar-> SetRange(0,500);      
                    pBar-> SetPos(m_nCount       *       100       /       nMaxCount);      
       
       
    CDialog::OnTimer(nIDEvent);      
    }      
       
    void       CComputeDlg::OnBnClickedStart()      
    {      
                    MSG       message;      
                    m_nTimer       =       SetTimer(1,       100,       NULL);       //       1/10       second      
                    ASSERT(m_nTimer       !=       0);      
                    GetDlgItem(IDC_START)-> EnableWindow(FALSE);      
                    volatile       int       nTemp;      
                    for       (m_nCount       =       0;       m_nCount       <       nMaxCount;       m_nCount++)       {      
                                    for       (nTemp       =       0;       nTemp       <       10000;       nTemp++)       {      
                                                    //       uses       up       CPU       cycles      
                                    }      
                                    if       (::PeekMessage(&message,       NULL,       0,       0,       PM_REMOVE))       {      
                                                    ::TranslateMessage(&message);      


                                                    ::DispatchMessage(&message);      
                                    }      
                    }      
                    GetDlgItem(IDC_START)-> EnableWindow(TRUE);      
                    CDialog::OnOK();      
    }      
这个地方PeekMessage(&message,       NULL,       0,       0,       PM_REMOVE))       到底是干嘛用的啊?如果没有它会有什么后果?

[解决办法]
我知道的用一种用法,就是利用windows的消息机制来做某些事情,你那里的PeekMessage是在主线程里,好像意义不大``不过如果你的PeekMessage{...}是放在另一个线程里,那么发送给那个线程的消息,都会经过peekmessage来转发``
我这边项目就用一个看不见的窗口,用来处理某些消息,例如MediaEventWnd,是一个窗口,看不见的,这个窗口在一个线程中注册创建,然后就开始消息循环,别的线程通过发送Play或Pasue等消息来控制视频。

热点排行