几番风雨 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 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式