VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 528|回复: 9

[求助] 主窗口该怎么样控制二个子窗口(对话框)相互隐藏显示?求助,谢谢!

[复制链接]
23_avatar_middle
online_vip ber331 发表于 2017-12-12 01:31:01 | 显示全部楼层 |阅读模式
已知子窗口隐藏就是在屏幕上看不到,显示就是即可看到。
已在主窗口的 OnButton1()按钮中创建子窗口B1,而后在子窗口B1 的OnButton1()中接着创建了子窗口 C2  。
下面为主窗口的代码:

CB1 B1;  //B1 为子类 CB1 的对象,

void CMyDlg::OnButton1()
{

B1.Create(IDD_DB1,GetDesktopWindow()); //这里 创建 子窗口B1(对话框B1)
B1.ShowWindow(SW_HIDE);//原先这里用        SW_SHOW,现用 SW_HIDE 一开场先隐藏起来,之后希望点击按钮 2 、3号显示出来。
B1.SetWindowPos(&wndNoTopMost , 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE);

SetDlgItemText(IDC_EDIT1,"问题是:如何通过主窗口的 2 、3 按钮 将隐藏的 2、3子对话框(子窗口)显示出来呢?");
       
}

void CMyDlg::OnButton2()
{
        // 想点击 子窗口 2号,显示 子窗口B1 出来
       
}

void CMyDlg::OnButton3()
{
        // 想点击 子窗口 3号,显示 子窗口B1 出来
       
}
请看截图:(截图应该上传成功!)
同时我也上传了“测试主窗口控制两子窗口相互隐藏显示”小文件,请老师指导,谢谢!

测试主窗口控制两子窗口相互隐藏显示测试主窗口控制两子窗口相互隐藏显示

测试主窗口控制两子窗口相互隐藏显示测试主窗口控制两子窗口相互隐藏显示




上一篇:智能指针问题咨询
下一篇:上传多个文件的问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

23_avatar_middle
ico_lz  楼主| ber331 发表于 2017-12-12 01:31:54 | 显示全部楼层
咦,看到了截图,但没看到压缩附件!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

23_avatar_middle
ico_lz  楼主| ber331 发表于 2017-12-12 01:32:59 | 显示全部楼层
补上“测试主窗口控制两子窗口相互隐藏显示”压缩附件!

测试主窗口控制两子窗口相互隐藏显示.rar

1.8 MB, 下载次数: 2

测试主窗口控制两子窗口相互隐藏显示

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
在线会员 freehawkzk 发表于 2017-12-12 12:19:49 | 显示全部楼层
在主窗口内的适当位置,先把这三个窗口都创建出来,然后隐藏。之后的三个按钮里只需要根据你的要求控制这三个窗口显示和隐藏就行了。ShowWindow。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2017-12-12 15:56:03 | 显示全部楼层
楼上正解,另外,楼主说的:隐藏的 2、3子对话框,这个 2 和 3 指的是谁?C2 和 C3 吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

23_avatar_middle
ico_lz  楼主| ber331 发表于 2017-12-12 20:39:30 | 显示全部楼层
2、3 指的是子窗口,一上场就隐藏了(屏幕上只看到一个主窗口对话框)。当点击主窗口(主对话框)中的 子窗口2号(OnBoutton 2) 时,跳出(显示)子窗口B1(子对话框2号) 出来,当点击主窗口(主对话框)中的 子窗口3号(OnBoutton 3) 时,跳出(显示)子窗口C2(子对话框3号) 出来!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

23_avatar_middle
ico_lz  楼主| ber331 发表于 2017-12-12 20:45:29 | 显示全部楼层
freehawkzk 发表于 8 小时前 | 只看该作者
”在主窗口内的适当位置,先把这三个窗口都创建出来“

已放在:void CMyDlg::OnButton1()
{

B1.Create(IDD_DB1,GetDesktopWindow()); //这里 创建 子窗口B1(对话框B1)
B1.ShowWindow(SW_HIDE);//原先这里用        SW_SHOW,现用 SW_HIDE 一开场先隐藏起来,之后希望点击按钮 2 、3号显示出来。
B1.SetWindowPos(&wndNoTopMost , 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE);

SetDlgItemText(IDC_EDIT1,"问题是:如何通过主窗口的 2 、3 按钮 将隐藏的 2、3子对话框(子窗口)显示出来呢?");
        
}
中,点击主窗口按钮 OnButton1() ,创建子窗口 2号。之后子窗口 2号 中的 OnButton1()创建 子窗口 3号。  点击主窗口 OnButton1()按钮,全创建完,只是2、3子窗口已隐藏了,屏幕上只显示主窗口。希望当点击主窗口(主对话框)中的 子窗口2号(OnBoutton 2) 时,跳出(显示)子窗口B1(子对话框2号) 出来,当点击主窗口(主对话框)中的 子窗口3号(OnBoutton 3) 时,跳出(显示)子窗口C2(子对话框3号) 出来!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

07_avatar_middle
在线会员 freehawkzk 发表于 2017-12-13 15:55:51 | 显示全部楼层
ber331 发表于 2017-12-12 20:45
freehawkzk 发表于 8 小时前 | 只看该作者
”在主窗口内的适当位置,先把这三个窗口都创建出来“

来个彻底点的,直接在主窗口的init里把三个子窗口A,B,C都创建好,隐藏。
之后点击哪一个按钮,就将那一个显示,剩余两个隐藏不就OK了么?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

23_avatar_middle
ico_lz  楼主| ber331 发表于 2017-12-19 21:14:49 | 显示全部楼层
//BOOL bVisible=IsWindowVisible(hwnd);
//int nCmdShow = bVisible ? SW_HIDE : SW_SHOW;
//ShowWindow(nCmdShow);  // 这招不行

用了这招:点点点点点~~~~,即可显示又可隐藏
        int app=0;
void CMyDlg::OnButton2()
{
        // 想点击 子窗口 2号,显示 子窗口B1 出来
app++;
HWND D_1;
D_1=::FindWindow(NULL,"B1 子窗口");
if(app%2!=0 && D_1 ){::ShowWindow(D_1,SW_SHOW);}
if(app%2==0 && D_1){::ShowWindow(D_1,SW_HIDE);}

}

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2018-11-19 22:40

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表