比如说用 MFC DLL 做了一个对话框类, CMfcDialog;如果这个对话框做成其他窗口的子窗口(child)时, 问题来了: 当焦点在CMfcDialog 对话框上面时, 按TAB键, 焦点就转移到父窗口, 而没有继续在CMfcDialog 内部跳转不知道是什么原因? 哪位大虾碰到过阿?   谢谢!

解决方案 »

  1.   

    MFC DLL 
    应该做成MFC扩展DLL,并且选择在动态库中使用MFC。
      

  2.   


    另外:  我知道WIN32 DLL 创建的DLL是可以的, 好像听说 WIN32的对话框都有自己的消息循环, 所以可以正常TAB但是我的DLL需要用到别人的界面类, win32 DLL不能使用MFC阿~
      

  3.   


    DentistryDoctor(雅克医生<改行做程序员了>) :
    扩展的MFC DLL可以吗?? 我试试看对了, 我有好多个工程, 都是用规则DLL, 怎么改成 扩展DLL???----我看到过一片文章,http://www.evget.com/articles/evget_820.html本例中,可以注意到DLL中所定义的About对话框资源与EXE中所定义的About对话框资源ID完全相同,但是当我们点击Use.exe上面的按钮时,弹出的是DLL中的模态对话框。说明,当使用静态链接到MFC的规则DLL时,不存在管理模块状态的问题。
      

  4.   

    DentistryDoctor(雅克医生<改行做程序员了>) :
    扩展的MFC DLL可以吗?? 我试试看对了, 我有好多个工程, 都是用规则DLL, 怎么改成 扩展DLL???----我看到过一片文章,http://www.evget.com/articles/evget_820.html本例中,可以注意到DLL中所定义的About对话框资源与EXE中所定义的About对话框资源ID完全相同,但是当我们点击Use.exe上面的按钮时,弹出的是DLL中的模态对话框。说明,当使用静态链接到MFC的规则DLL时,不存在管理模块状态的问题。
      

  5.   

    我遇到过同样的问题,知道我怎么做的吗?我Hook了键盘消息,然后手工设置它们的焦点。
    期待更好的方法。
      

  6.   

    对话框作为子窗口,需要主程序的消息循环调用IsDialogMessage,否则TAB会无法正常工作。