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