求助切换窗口

hgy605 2010-07-01 12:51:12
现在一个Dialog上放了一个按钮B,点击B后弹出Dialog1,在Dialog1上放了个按钮B1,点击B1,Dialog1被切换成Dialog2,Dialog2上放一个按钮B2,点击B2又会切换回Dialog1,设两个相互切换的弹出框对应的类为CDialog1/CDialog2,请问怎么在B1和B2上写事件响应函数,我写成
{
DestoryWindow();
CDialog1 test;
test.doModel();
}
发现闪烁得厉害,求高手指点,当然能不销毁窗口,只是做两个弹出框的相互隐藏更好。求可用的代码,在线等。
...全文
93 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_heilongjiang 2010-07-01
  • 打赏
  • 举报
回复
我的帖子都被顶没了~~~~(>_<)~~~~
http://topic.csdn.net/u/20100701/14/685e874d-bf07-46a4-bb03-68d9e6a126f3.html
hgy605 2010-07-01
  • 打赏
  • 举报
回复
都解决了,谢谢各位,结贴
jay0708 2010-07-01
  • 打赏
  • 举报
回复
ShowWindow(SW_SHOW)显示
ShowWindow(SW_HIDE)隐藏
hgy605 2010-07-01
  • 打赏
  • 举报
回复
嗯,貌似我就是那样解决的!
hgy605 2010-07-01
  • 打赏
  • 举报
回复
顺便问下,怎么让窗口从隐藏到显示,是显示在屏幕指定位置,而不是左上角!
jay0708 2010-07-01
  • 打赏
  • 举报
回复
那我说具体点你看看行不行:

首先你不是在资源视图中创建了两个对话框吗?
右键点击,分别建立新的类,基类都是CDialog。比如CMyDlg1,CMyDlg2类。
然后,在这两个类中分别添加一个指针变量。比如在CMyDlg1类中,添加一个CMyDlg2* m_pDlg2。
在CMyDlg2类中,添加一个CMyDlg1* m_pDlg2.需要各自include。

至于如何把这个指针传给对方,方法很多,你就随意了,可以在构造函数里传值,也可以定义一个成员函数,把这个指针变量传进去。
创建两个DIALOG(把各自的CWnd指针传给对方),就可以随便控制了。
hgy605 2010-07-01
  • 打赏
  • 举报
回复
自己解决了,不过还是继续求高手给段经典点的代码!
hgy605 2010-07-01
  • 打赏
  • 举报
回复
。。给段具体代码
jay0708 2010-07-01
  • 打赏
  • 举报
回复
两个Dialog类里面都定义一个CDialog指针,指向彼此。创建的时候把各自的指针付给对方,两者就能够相互控制
hgy605 2010-07-01
  • 打赏
  • 举报
回复
继续在线等!!
hgy605 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoc1026 的回复:]
C/C++ code
//在DIALOG 中
m_Dlg1.Create(CDialog1:IDD);
m_Dlg1.ShowWindow(SW_HIDE);

m_Dlg2.Create(CDialog2:IDD);
m_Dlg2.ShowWindow(SW_HIDE);

//在DLG1中按下按钮:
m_Dlg2.ShowWindow(SH_SHOW);
this->Sh……
[/Quote]
在Dlg中定义的m_Dlg2,怎么在Dlg1中调用?
Eleven 2010-07-01
  • 打赏
  • 举报
回复
换成非模态对话框即可
见习学术士 2010-07-01
  • 打赏
  • 举报
回复
//在DIALOG 中 
m_Dlg1.Create(CDialog1:IDD);
m_Dlg1.ShowWindow(SW_HIDE);

m_Dlg2.Create(CDialog2:IDD);
m_Dlg2.ShowWindow(SW_HIDE);

//在DLG1中按下按钮:
m_Dlg2.ShowWindow(SH_SHOW);
this->ShowWindow(SW_HIDE);

//在DLG2中按下按钮:
m_Dlg1.ShowWindow(SH_SHOW);
this->ShowWindow(SW_HIDE);
Hiiishe 2010-07-01
  • 打赏
  • 举报
回复
两个对话框都这个成员变量,注意在构造时赋NULL
CWnd* m_pOther;

dlg1:
{
if( !m_pOther)
{
CDlg2* dlg2 = new CDlg2();
dlg2->create()
dlg2->SetOtherDlg(this);
m_pOther = dlg2;
}

m_pOther->showwindow(SW_NORMAL)
ShowWindow(SW_HIDE)
}

dlg2:
{
if(!m_pOther)
return;
m_pOther->showwindow(SW_NORMAL)
ShowWindow(SW_HIDE)
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧