程序描述:
(1)一个基于对话框的MFC应用程序做成的DLL——TVDLL.dll
         在这个制成dll的应用程序中有一个主模态对话框TVPlayerDlg;
         另外在这个主对话框上点击一个按钮控件就可以创建一个非模态子对话框TVEPGDlg;(2)一个基于对话框的MFC应用程序NewMedia
       其有一个主对话框MainDlg,这个应用程序调用了上面的dll;问题:
   现在启动应用程序NewMedia,显示主对话框MainDlg(键盘焦点在对话框MainDlg),点击这个对话框的一个按钮控件就会调用dll来打开并显示TVPlayerDlg(键盘焦点在对话框TVPlayerDlg),然后再点击TVPlayerDlg对话框的按钮控件就创建并显示非模态对话框TVEPGDlg(键盘焦点在对话框TVEPGDlg);
  
   然后,按“取消”按钮,对话框TVEPGDlg消失,可键盘焦点却在主对话框MainDlg上,不在对话框TVPlayerDlg;我是想取消非模态对话框后焦点要落在dll中的TVPlayerDlg上,请教高手,怎么控制这个焦点让其落在dll中的主模态对话框TVPlayerDlg上??
(PS:如果dll中的子对话框TVEPGDlg也是模态对话框的情况下,上面焦点就正确,现在因为其是非模态对话框,焦点就不好控制,考虑其他一些功能的控制,不能把子对话框TVEPGDlg做成模态对话框,特此请教高手能否控制焦点,如何控制)
      

解决方案 »

  1.   

    写的很详细,楼主确实很认真!CWnd::SetFocus
    具体用法看看MSDN。
      

  2.   

    能否说详细点,
    现在一个对话框是在DLL中的,一个是应用程序中的,而焦点在应用程序上,而需求的焦点要在DLL中的对话框上,不知道在哪下手
      

  3.   

    在取消TVEPGDlg窗口时,可以向TVPlayerDlg窗口SendMessage WM_SETFOCUS(需要TVPlayerDlg窗口的句柄),在MainDlg里面也可以这样做。
      

  4.   

    获得那个要打开的窗口的句柄,然后用SetActiveWindow(),SetForegroundWindow(),BringWindowToTop()貌似都可以
      

  5.   

    如何发送SendMessage WM_SETFOCUS消息