mfc 窗体间的跳转! 急 ……………………

有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();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-27
哈哈,可以肯定,你的C++水平相当的菜啊。。。。

没有C++的基础,就不来弄这些了。

你说的这个问题就是两个类之间的通信问题,

你可以构造另一个窗口类时,传一个当前类的窗口指针进去就行了啊。

好好学基础吧,虽然不懂MFC,但劝你还是去学C语言呢,C语言就没有这种问题了。
第2个回答  2010-10-29
在两个对话框中分别写入两个按钮的响应事件。
如下:
CDialog dlg;//创建对象
if(dlg.m_hwnd==NULL)//判断创建对话框没有,如果创建了,再次创建就会出错。
dlg.creat();//创建窗口
dlg.showwindow();//显示窗口
第3个回答  2010-10-27
不知道你要在什么情况下使用,如果是一个窗口中的数据要用到令一个窗口,你可以在按钮点击事件中定义窗口然后显示它并传值
第4个回答  2010-10-26
findwinow();
showwindow();

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网