有2个窗体 每个窗体有 个按钮, 点击A窗口的 a 按钮跳转到B 窗体,点击B 窗体的b按钮 跳转到A窗体 实现 窗体间的跳转、。。。高分 等 。追加 50分 。
要实现这个功能。
最少有一个为 对话框 为非模式 对话框。
方法:
新建一个对话框 程序 A 类就是 CADlg
添加一个 对话框资源B ,ID为 IDD_DIALOGB ,类为CBDlg
把 CBDlg 的头文件 bdlg.h 包含到 CADlg 的头文件,并在CADlg类中定义一个
CBDlg对象.
#include "bdlg.h" //这是新加代码。
/////////////////////////////////////////////////////////////////////////////
// CADlg dialog
class CADlg : public CDialog
{
// Construction
public:
CADlg(CWnd* pParent = NULL); // standard constructor
CBDlg bdlg; //这是新加代码。
// Dialog Data
//{{AFX_DATA(CADlg)
enum { IDD = IDD_A_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
。。。。。。
在CADlg的初始化函数中加入代码
BOOL CADlg::OnInitDialog()
{
。。。。。。。
bdlg.Create(IDD_DIALOGB);//这是新加代码。
return TRUE;
}
在对话框A上放置一个按钮a,双击添加事件如下
void CADlg::OnButton1()
{
// TODO: Add your control notification handler code here
ShowWindow(0);
bdlg.ShowWindow(1);
}
以上是对A的处理。
在对话框B上放置一个按钮 ,双击添加事件如下
void CBDlg::OnButton1()
{
// TODO: Add your control notification handler code here
ShowWindow(0);
GetParent()->ShowWindow(1);
}
到这里已经可以实现切换窗口了,但是 当显示B窗口时,如果点击了 关闭按钮,那么由于A处于隐藏状态,程序就无法控制了。
最好的方法是 B窗口关闭后,发送消息 整个程序结束。
void CBDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
::PostQuitMessage(0);
CDialog::OnClose();
}
BOOL CBDlg::DestroyWindow()
{
::PostQuitMessage(0);
// TODO: Add your specialized code here and/or call the base class
return CDialog::DestroyWindow();
}
void CBDlg::OnOK()
{
// TODO: Add extra validation here
::PostQuitMessage(0);
CDialog::OnOK();
}
void CBDlg::OnCancel()
{
// TODO: Add extra cleanup here
::PostQuitMessage(0);
CDialog::OnCancel();
}
最少有一个为 对话框 为非模式 对话框。
方法:
新建一个对话框 程序 A 类就是 CADlg
添加一个 对话框资源B ,ID为 IDD_DIALOGB ,类为CBDlg
把 CBDlg 的头文件 bdlg.h 包含到 CADlg 的头文件,并在CADlg类中定义一个
CBDlg对象.
#include "bdlg.h" //这是新加代码。
/////////////////////////////////////////////////////////////////////////////
// CADlg dialog
class CADlg : public CDialog
{
// Construction
public:
CADlg(CWnd* pParent = NULL); // standard constructor
CBDlg bdlg; //这是新加代码。
// Dialog Data
//{{AFX_DATA(CADlg)
enum { IDD = IDD_A_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA
。。。。。。
在CADlg的初始化函数中加入代码
BOOL CADlg::OnInitDialog()
{
。。。。。。。
bdlg.Create(IDD_DIALOGB);//这是新加代码。
return TRUE;
}
在对话框A上放置一个按钮a,双击添加事件如下
void CADlg::OnButton1()
{
// TODO: Add your control notification handler code here
ShowWindow(0);
bdlg.ShowWindow(1);
}
以上是对A的处理。
在对话框B上放置一个按钮 ,双击添加事件如下
void CBDlg::OnButton1()
{
// TODO: Add your control notification handler code here
ShowWindow(0);
GetParent()->ShowWindow(1);
}
到这里已经可以实现切换窗口了,但是 当显示B窗口时,如果点击了 关闭按钮,那么由于A处于隐藏状态,程序就无法控制了。
最好的方法是 B窗口关闭后,发送消息 整个程序结束。
void CBDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
::PostQuitMessage(0);
CDialog::OnClose();
}
BOOL CBDlg::DestroyWindow()
{
::PostQuitMessage(0);
// TODO: Add your specialized code here and/or call the base class
return CDialog::DestroyWindow();
}
void CBDlg::OnOK()
{
// TODO: Add extra validation here
::PostQuitMessage(0);
CDialog::OnOK();
}
void CBDlg::OnCancel()
{
// TODO: Add extra cleanup here
::PostQuitMessage(0);
CDialog::OnCancel();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-10-27
哈哈,可以肯定,你的C++水平相当的菜啊。。。。
没有C++的基础,就不来弄这些了。
你说的这个问题就是两个类之间的通信问题,
你可以构造另一个窗口类时,传一个当前类的窗口指针进去就行了啊。
好好学基础吧,虽然不懂MFC,但劝你还是去学C语言呢,C语言就没有这种问题了。
没有C++的基础,就不来弄这些了。
你说的这个问题就是两个类之间的通信问题,
你可以构造另一个窗口类时,传一个当前类的窗口指针进去就行了啊。
好好学基础吧,虽然不懂MFC,但劝你还是去学C语言呢,C语言就没有这种问题了。
第2个回答 2010-10-29
在两个对话框中分别写入两个按钮的响应事件。
如下:
CDialog dlg;//创建对象
if(dlg.m_hwnd==NULL)//判断创建对话框没有,如果创建了,再次创建就会出错。
dlg.creat();//创建窗口
dlg.showwindow();//显示窗口
如下:
CDialog dlg;//创建对象
if(dlg.m_hwnd==NULL)//判断创建对话框没有,如果创建了,再次创建就会出错。
dlg.creat();//创建窗口
dlg.showwindow();//显示窗口
第3个回答 2010-10-27
不知道你要在什么情况下使用,如果是一个窗口中的数据要用到令一个窗口,你可以在按钮点击事件中定义窗口然后显示它并传值
第4个回答 2010-10-26
findwinow();
showwindow();
showwindow();