MFC新对话框的创建以及隐藏任务栏窗口图标

MFC创建新的对话框时,当新窗口是主窗口的子窗口时,任务栏程序图标只显示主窗口图标;但当新窗口与主窗口不为父子窗口关系时,任务栏程序图标会显示两个图标,有时候我们需要隐藏新窗口图标,只显示主窗口图标。可以通过先创建一个以桌面为父窗口的隐藏窗口,然后新创建窗口以隐藏窗口为父窗口的方法来实现。
一、创建新窗口
1.在资源视图插入Dialog
在这里插入图片描述
2.为Dialog创建类
在这里插入图片描述

在这里插入图片描述
3.创建对话框
MFC对话框有两种方式,分别是模态对话框和非模态对话框。
(1)模态对话框

void CtestDlg::OnBnClickedButton1()
{
	// TODO:  在此添加控件通知处理程序代码
	//创建一个模态对话框
	CSecondDlg sd;	
	sd.DoModal();	
}

模态对话框使用时,无法对父窗口进行操作,任务栏只显示主窗口图标。
在这里插入图片描述

(2)非模态对话框
a.非模态对话框使用时,可以对父窗口进行操作。新创建非模态对话框默认为主窗口的子窗口,任务栏只显示主窗口图标,但主窗口最小化或者隐藏窗口等操作时,非模态对话框也会随着进行相同的操作。

CSecondDlg* sd = NULL;
void CtestDlg::OnBnClickedButton2()
{
	// TODO:  在此添加控件通知处理程序代码
	sd = new CSecondDlg();
	sd->Create(IDD_SECOND); //创建一个非模态对话框,父窗口时主窗口
	sd->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框
}

任务栏只显示主窗口图标
在这里插入图片描述
主窗口最小化,新窗口也最小化
在这里插入图片描述
b.非模态对话框不是主窗口的子窗口时,主窗口最小化或者隐藏窗口等操作时,非模态对话框不会随着进行相同的操作,但任务栏会显示主窗口和新窗口图标。

CSecondDlg* sd = NULL;
void CtestDlg::OnBnClickedButton2()
{
	// TODO:  在此添加控件通知处理程序代码
	sd = new CSecondDlg();
	sd->Create(IDD_SECOND,GetDesktopWindow()); //创建一个非模态对话框,以桌面为父窗口
	sd->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框
}

任务栏会显示主窗口和新窗口图标
在这里插入图片描述
主窗口最小化,新窗口没有最小化
在这里插入图片描述

二、隐藏任务栏窗口图标

CSecondDlg* sd = NULL;
CHideDlg* hd = NULL;
void CtestDlg::OnBnClickedButton2()
{
	// TODO:  在此添加控件通知处理程序代码
	//创建隐藏对话框
	hd = new CHideDlg();
	hd->Create(IDD_HIDE, GetDesktopWindow());//创建一个非模态对话框,以桌面为父窗口
	hd->ShowWindow(SW_HIDE); //隐藏非模态对话框
	//新创建对话框以隐藏对话框为父窗口
	sd = new CSecondDlg();
	sd->Create(IDD_SECOND, hd); //创建一个非模态对话框,以隐藏非模态对话框为父窗口
	sd->ShowWindow(SW_SHOWNORMAL); //显示非模态对话框
}

任务栏只显示主窗口图标
在这里插入图片描述
主窗口最小化,新窗口没有最小化
在这里插入图片描述
这个方法可以让任务栏只显示主窗口图标,且主窗口不会影响新创建的非模态对话框。同理,如果主窗口用SetParent设置隐藏窗口为父窗口,就可以把主窗口图标也隐藏了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzl2323406

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值