需求:有页面A和页面B,在A页面单击鼠标切换到页面B,页面B上在客户区创建了八个无模式对话框,这八个对话框可能是定义好的CDialog1---CDialog8中的一种或是八种或是  这需要根据鼠标在页面上单击的位置所传的参数来确定.实现AB页面的相互切换;
我现在想问的是:
这八个对话框变量怎么定义,要是预先定义(全局变量)好的话,A页面鼠标还没有单击不知道这八个对话框是不是同一类的;要是根据A页面单击传递的参数来确定临时定义(局部变量),那定义创建八个对话框,从页面B切换到页面A时 那八个对话框该如何销毁;

解决方案 »

  1.   


    你想通过获取鼠标的位置来获取参数,从而决定打开哪个CDialog对吗?你可以在A切换到B的时候,你可以相应WM_ACTIVATE消息。afx_msg   void   OnActivate(   UINT   nState,   CWnd*   pWndOther,   BOOL   bMinimized   );   
      nState可以是三种值WA_INACTIVE,   WA_ACTIVE,WA_CLICKACTIVE,   后面两个表示激活获得焦点,前一个失去焦点   
    以上是加入映射的方法。
    获取鼠标位置的坐标又很容易的,用GetCursorPos 这个API就可以了,写在WM_ACTIVATE消息的相应事件中。你想在B切换到A的时候,销毁非模式对话框是把?同样响应WM_ACTIVATE消息,在消息映射中判断失去焦点,处理销毁的动作。