是否能通过一个setTimer而在每一个窗口中都产生作用呢?比如我要实现无论我当前在程序的那个窗口,每50秒就自动弹出提示,该如何实现

解决方案 »

  1.   

    1. 自定义一个定时器ID,比如#define IDT_MYTIMER     2000
    2. 自定义一个消息ID,比如#define WM_MYMESSAGE      WM_USER + 1001
    2. 在主窗口中设置一个定时器SetTimer(IDT_MYTIMER, 1000, NULL);
    3. 在当定时器事件函数中, 当时间到了就把该消息发送当前窗口:
       CYourDlg::OnTimer(UINT nIDEvent)
       {
           if (IDT_MYTIMER == nIDEvent)
              ::PostMessage(::GetActiveWindow() , WM_MYMESSAGE, NULL, NULL );
           CDialog::OnTimer(nIDEvent);
       }
    4. 在所有窗口都写一个你自定义的消息处理函数
       LRESULT CYourDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
      {
           // do something
      }
      

  2.   

    谢谢楼上的,但是我有点不明白,为什么当我的主窗口没有激活的时候,他也能执行其中所订制的settimer呢,难道settimer是无论本窗口是否激活都有效果的么