MFC对话框父对话框通过按键Button弹出新对话框,要如何实现? 20

BOOLCModalessTest::Create(LPCTSTRlpszClassName,LPCTSTRlpszWindowName,DWORDdwStyle,con... BOOL CModalessTest::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class

return CDialog::Create(IDD, pParentWnd);
}

void CTE_CONDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CModalessTest* pDlg = new CModalessTest();
pDlg->Create(CModalessTest::IDD,this);
pDlg->ShowWindow(SW_SHOW);
}
显示错误为E:\tem_con\TE_CON\TE_CONDlg.cpp(222) : error C2660: 'Create' : function does not take 2 parameters
Error executing cl.exe.
展开
 我来答
百度网友6eab688
2012-08-23 · TA获得超过4691个赞
知道大有可为答主
回答量:962
采纳率:50%
帮助的人:947万
展开全部
你CModalessTest对话框的Create咋这么复杂? 应该这样就可以了
BOOL CModalessTest::Create(CWnd* pParentWnd)
{
// TODO: 在此添加专用代码和/或调用基类
return CDialog::Create(CModalessTest::IDD, pParentWnd);
}

然后在 void CTE_CONDlg::OnButton1() 函数中
CModalessTest* pDlg = new CModalessTest();
pDlg->Create(this);
追问
这个貌似是不可以自己定义Create的,按照上述做完会显示:Cannot find the definition (implementation) of this function
追答
CModalessTest的头文件中没有相应修改成员函数原型?
HongZe081100
2012-08-23 · TA获得超过580个赞
知道小有建树答主
回答量:436
采纳率:0%
帮助的人:438万
展开全部
响应button消息,处理该消息

继承一个CDialog 类,
new 继承类的对话框对象,//模态,非模态对话框。
显示对话框
更多追问追答
追问
求具体指导
追答
找到资源那里,插入个对话框资源ID任意,双击,提示这是新的资源是否需要创建类,按yes,
选择MFC的类,给这个对话框关联的类取个名字,你任意,下面选择基类,CDialog,点击ok完成。

响应button消息,classwizard或者资源对话框上双击该按钮,添加按钮单击消息,编辑代码...

添加头文件“....h”,刚才对话框关联类的头文件

创建对话框对象,显示,模态对话框如:
void ******::OnButton1()
{
CMyDialog dg;
dg.DoModal();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2012-08-23 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1324万
展开全部
没有必要自己定义Create函数,使用缺省的就可以,如果你定义了,就自动调用你定义的函数,可是你自己定义的Create函数确实不止2个参数,如果你不定义,就会调用缺省的函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
resonly6510
2012-08-23 · 超过17用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:61.4万
展开全部
你是不是重载复盖了Create?
你看一下参数类型都不对,怎么可能编绎成功呢。
追问
什么意思?我刚开始学,完全菜
追答
显示错误为E:\tem_con\TE_CON\TE_CONDlg.cpp(222) : error C2660: 'Create' : function does not take 2 parameters

这个错误是说不存在 2个参数的Create函数。

C++中同名复盖,是你的自己定义的Create函数复盖了CDialog的Create
而你定义的这个:
BOOL CModalessTest::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)

跟你调用的参数类型都不一样:
pDlg->Create(CModalessTest::IDD,this); //此时调用的是CModalessTest::Create,而不是CDialog::Create,因此调用时要按CModalessTest::Create参数填写调用。

//这个跟MFC没什么关系的,我建议你看一下,C++重载,复盖,虚函数等的用法
C++中,同类中,同名为重载。基类与派生类中,同名为复盖。同名加virtual为虚函数,虚函数调用是根据相对应该的类的指针实现。你定义的Create是CDialog的派生类CModalessTest中,Create虽然在CDialog是虚函数,但
CModalessTest* pDlg = new CModalessTest(); //pDlg 为CModalessTest 对象指针,而非CDialog 对象指针
pDlg->Create(this); //此处调用的是 CModalessTest::Create,而非CDialog::Create
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Andy1127
2012-08-24
知道答主
回答量:5
采纳率:0%
帮助的人:3.2万
展开全部
把新的Dialog设置成父窗体的成员变量。不要设置成局部变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式