放个图形象些这是一个非模态对话框,对象指针保存在mainframe里,我想在这上面响应鼠标移动、静态文本控件点击等事件,无奈没有成功。
第一次写非模态对话框,不知个中奥妙,望大神们写得详细一点
顺便说一下,创建这个窗口的时候它抢去了主窗口的焦点,怎样让它不获取焦点呢?又或者鼠标移到里面去才获取焦点?先谢谢了~

解决方案 »

  1.   

    用父窗体的PretranslateMessage来截获消息。因为非模态对话框,本身是没有消息循环的。
      

  2.   

    while(GetMessage(&stMsg,NULL,0,0))
    {
      if(!IsDialogMessage(hDlg,&stMsg))
      {
      TranslateMessage(&stMsg);
      DispatchMessage(&stMsg);
      }
    }
      

  3.   

    CStatic控件勾上Notify(或者设置SS_NOTIFY属性),然后再添加STN_CLICKED点击通知。
      

  4.   

    创建的时候记住主窗口的句柄,创建完成后用你记住的句柄调用SetForegroundWindow,和SetActiveWindow函数可以时主窗口获得焦点,CStatic 获得单击消息楼上正解
      

  5.   

    只要在主窗口PretranslateMessage中加入这个就行了么?
      

  6.   

    用这两个函数确实可以去焦点,但是当点击对话框窗体的时候就没法不让对话框获得焦点了,网上说重载killfocus之类的函数响应获取焦点或失去焦点,但是费墨台对话框没有消息循环又怎么响应呢?
      

  7.   

    脱了这么久才结贴,真抱歉……
    最后是直接在这个对话框里重载PretranslateMessage,但是没写任何代码就能捕捉鼠标移动事件了