几番风雨 2013-12-24 09:42 采纳率: 0%
浏览 1031

对话框嵌套问题(MFC 关于背景覆盖)?

有对话框A和对话框B, A嵌套到B中. B中右上角有三个按钮, n1, n2, n3. 其中,n2为放大按钮.对话框B是黑色背景的,对话框A显示一幅图片. 当点击放大按钮n2时,由于窗口重绘, 对话框B的黑色背景覆盖了对话框A的画面. 请问各位网友, 如何解决背景色覆盖问题?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 18:46
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/220294
    • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:我自己想到了解决MFC背景图片覆盖控件的方法,非常简单
    • 除此之外, 这篇博客: MFC 返回上一级对话框中的 当使用在一个对话框A(父对话框)内打开另一个对话框B(子对话框),如何实现父对话框的隐藏,然后当子对话框关闭时,如何将子对话框关闭的同时打开隐藏的父对话框? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      在父对话框中创建并显示子对话框,同时隐藏父对话框:

      void Student_Login::OnBnClickedButtonCc()
      {
      	// TODO: 在此添加控件通知处理程序代码
      	ChooseCourse *m_dlg = new ChooseCourse(this);
      	m_dlg->Create(IDD_DIALOG_COURSE, this);
      
      	//隐藏本对话框
      	this->ShowWindow(SW_HIDE);
      
      	//显示子对话框
      	m_dlg->ShowWindow(SW_SHOW);
      }
      

      在子对话框中关闭子对话框同时显示出父对话框:
      1、首先定义一个全局变量CWnd *m_pParent来保存从父对话框传过来的父对话框窗口句柄。

      private:
      	CWnd *m_pParent;
      

      2、在子对话框类的构造函数中将父对话框传过来的父对话框窗口句柄保存到m_pParent中。

      ChooseCourse::ChooseCourse(CWnd* pParent /*=nullptr*/)
      	: CDialogEx(IDD_DIALOG_COURSE, pParent)
      {
      	m_pParent = pParent;
      }
      

      3、在子对话框函数中显示父对话框,同时关闭子对话框:

      void ChooseCourse::OnBnClickedButtonBack1()
      {
      	// TODO: 在此添加控件通知处理程序代码
      	m_pParent->ShowWindow(SW_SHOW);
      
      	DestroyWindow();
      	delete this;
      }
      

      大功告成!!!


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项