我希望做成这样,当打开主程序以后如果用户在主程序里操作就直接可以操作,但是当用户点击其它任务时这个程序给个提示,告诉用户当前已经没有在用这个程序了,我应该怎么知道焦点是不是在我的程序上呢?系统发送了什么消息?

解决方案 »

  1.   

    WM_ACTIVATE在窗口失焦的时候会触发的,你处理这个就行了
      

  2.   

    afx_msg void OnIfActive();ON_MESSAGE(WM_ACTIVATE,OnIfActive)void C***View::OnIfActive()
    {
    MessageBox( "aaa" );
    return;
    }这样写是不是不对啊,因为收不到那个WM_ACTIVATE的消息
      

  3.   


    这个消息是这样使用的吧 ON_WM_ACTIVATE()不是ON_MESSAGE(WM_ACTIVATE,OnIfActive)
      

  4.   

    OnActivate(UINT nState,CWND *pWndOther,BOOL bMinimized)
    函数原型函数里面你还应该调用 CDialog::OnActivate(,.....);
      

  5.   

    afx_msg void OnActivate()ON_WM_ACTIVATE()void C***View::OnActivate()
    {}这样还是不行的
      

  6.   


    这样也不能获取消息,单步调试的时候就根本不进OnActivate函数
      

  7.   

    Onkillfocus. 但是只谈一次MsgBox. 不要老弹, 因为你每弹一次那个焦点就跑到msgbox上了. 这样就老killfocus.
      

  8.   

    还有人关注吗现在?
    我跟11楼一样,调试根本就不跳进,我看了下,可能这个方法用在CXXXView上不灵,只能用在CXXXDlg上
    高手帮忙解答下