Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在MFC视图中承载的无模式对话框上设置焦点_C++_Mfc_Dialog_Modal Dialog - Fatal编程技术网

C++ 在MFC视图中承载的无模式对话框上设置焦点

C++ 在MFC视图中承载的无模式对话框上设置焦点,c++,mfc,dialog,modal-dialog,C++,Mfc,Dialog,Modal Dialog,我有一个MFC视图,还有另一个实现和MFC对话框的项目。 我想在我的视图中主持该对话框。 我的观点是C或M类观点 我在视图代码中就是这样做的: m_myDialog->Create(myDialog::IDD,this) 现在,我看到了我的对话框,但我无法设置焦点,也无法使用它 为了在视图中承载对话框,并且能够使用它并将其设置为焦点(作为视图的一部分),我必须更改什么 谢谢我知道这已经有几个星期了,但是您需要提供更多的代码或更好的上下文来了解正在发生的事情 我自己也有类似的问题&当我第一次尝试时

我有一个MFC视图,还有另一个实现和MFC对话框的项目。 我想在我的视图中主持该对话框。 我的观点是C或M类观点

我在视图代码中就是这样做的:

m_myDialog->Create(myDialog::IDD,this)

现在,我看到了我的对话框,但我无法设置焦点,也无法使用它

为了在视图中承载对话框,并且能够使用它并将其设置为焦点(作为视图的一部分),我必须更改什么


谢谢

我知道这已经有几个星期了,但是您需要提供更多的代码或更好的上下文来了解正在发生的事情

我自己也有类似的问题&当我第一次尝试时,发现很难找到相关信息。下面是我用过的东西的摘要。我相信可能有更好的方法可以做到这一点,但我发现它按照我想要的方式工作

        //MyApp.h

        class MyDialogClass;

        class MyApp : public CWinAppEx
        {
        public:
            MyApp();
            virtual BOOL InitInstance();
            //code etc
            MyDialogClass *p_myDlg;
        };


        //MyApp.cpp
        #include "MyApp.h"
        #include "CMyView.h"
        #include "mydialogclass.h"


        BOOL MyApp::InitInstance()
        {
        //code etc

            p_myDlg = CMyView::GetView()->p_myDlg;  

        //can be used here or elsewhere. I have mine linked with a button
            p_myDlg->ShowWindow(true);

        };


        //CMyView.h

        class MyDialogClass;

        class CMyView : public CFormView
        {
         protected: // create from serialization only
            CMyView();
            DECLARE_DYNCREATE(CMyView)

         public:
            enum{ IDD = IDD_CMyView_VIEW };

                static CMyView* GetView();
                MyDialogClass *p_myDlg;
            afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
        };


        //CMyView.cpp
        #include "MyApp.h"
        #include "CMyView.h"
        #include "mydialogclass.h"

        int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
        {
            if (CFormView::OnCreate(lpCreateStruct) == -1)
                return -1;

            p_myDlg = new MyDialogClass(this);

            return 0;
        }

        void CMyView::DisplayDialogFoo()
        {

           //can be used here or elsewhere. I have mine linked with a button
           p_myDlg->ShowWindow(true);

        }

        //mydialogclass.h
        class MyDialogClass : public CDialog
        {
            DECLARE_DYNAMIC(MyDialogClass)
         public:
            MyDialogClass(CWnd* pParent /*= NULL*/);
            enum { IDD = IDD_MyDialog_DLG };
        };

        //mydialogclass.cpp
        #include "mydialogclass.h"

        MyDialogClass::MyDialogClass(CWnd* pParent /*=NULL*/)
            : CDialog(MyDialogClass::IDD, pParent)
        {
            Create(IDD, pParent);
        }
我在这里还发现了一篇文章: