菜鸟请教:mfc中form简单遮盖重绘

linuxlsx 2013-01-23 01:39:30
MFC中,我有两个FORM form1里面有些按钮什么的,form2一样
form2是在单击form1中的按钮后触发创建的 是完全遮盖住form1
代码如下
CFormDLg1::onbuttonclick()
{
CFormDlg2 m_Dlg=new CFormDlg2();
m_Dlg->Create(IDD_FV,this);
CRect rect;
this->GetWindowRect(&rect);
ScreenToClient(&rect);
m_addDopeLibDlg->MoveWindow(&rect);//遮盖当前form1
//this->ShowWindow(SW_HIDE);
this->EnableWindow();
m_addDopeLibDlg->ShowWindow(SW_SHOW);//显示form2
}
问题是 form2出现后开始能完全遮盖form1,但鼠标在form2上拖动时候,会使得窗口重绘,结果将form1中的按钮什么都重绘出来了,怎么让当前只显示form1?我用this->ShowWindow(SW_HIDE);将form1隐藏结果就根本开不到form2了。
...全文
227 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
等明天看有没有人回,就结贴。
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
引用 16 楼 lsxjl 的回复:
主要是form2只有在form1中才会弹出来.按照逻辑也属于form1的子form。
只能说 点击form1的button -> 创建一个form2 ,form2不属于form1
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
主要是form2只有在form1中才会弹出来.按照逻辑也属于form1的子form。
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
引用 14 楼 lsxjl 的回复:
按照 主-->form1 主--->form2 这样可以达到目的。 不知按照主--form1-->form2可以达到目的不。
不行, 你这样破坏的 界面层次关系
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
按照 主-->form1 主--->form2 这样可以达到目的。 不知按照主--form1-->form2可以达到目的不。
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
引用 12 楼 lsxjl 的回复:
主dlg()-->form1--->form2 在按form1中的一个弹出menu后出现form2。form2完全遮盖住form1,且需要鼠标拖动,最小化等后重绘不出现form1的控件,(当前只显示form2)
为什么会这么设计?逻辑层过不去。 F1 addchild F2 , F1 -> hide ,F2 ->show 。至少我没用见过这样的需求。 这个应该需要你自己实现。 MFC的界面关系,应该是 parent ->hide ,allChild -> hide
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
主dlg()-->form1--->form2 在按form1中的一个弹出menu后出现form2。form2完全遮盖住form1,且需要鼠标拖动,最小化等后重绘不出现form1的控件,(当前只显示form2)
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
引用 9 楼 lsxjl 的回复:
CFormDLg1->ShowWindow(SW_HIDE);//这个不行? 是的,创建时候将form2作为form1的子类m_Dlg->Create(IDD_FV2,this); 隐藏form1了,form2也就看不到了。
那 form1又是基于谁? 你让form2创建的时候基于 form1的父类不行? 我MFC不熟悉...
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
我是需要form2作为form1的子form
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
CFormDLg1->ShowWindow(SW_HIDE);//这个不行? 是的,创建时候将form2作为form1的子类m_Dlg->Create(IDD_FV2,this); 隐藏form1了,form2也就看不到了。
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
.....坑我吧.. CFormDLg1->ShowWindow(SW_HIDE);//这个不行? CFormDLg1这是个控件吧? 应该有自身的隐藏函数吧
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
----------抱歉,写错了—————————————————— MFC中,我有两个FORM form1里面有些按钮什么的,form2一样 form2是在单击form1中的按钮后触发创建的 是完全遮盖住form1 代码如下 CFormDLg1::onbuttonclick() { CFormDlg2 m_Dlg=new CFormDlg2(); m_Dlg->Create(IDD_FV2,this); CRect rect; this->GetWindowRect(&rect); ScreenToClient(&rect); m_Dlg->MoveWindow(&rect);//form2遮盖当前form1 //this->ShowWindow(SW_HIDE); this->EnableWindow(); m_Dlg->ShowWindow(SW_SHOW);//显示form2 } 问题是 form2出现后开始能完全遮盖form1,但鼠标在form2上拖动时候,会使得窗口重绘,结果将form1中的按钮什么都重绘出来了,怎么让当前只显示form2,重绘时不出现form1的控件?我用this->ShowWindow(SW_HIDE);将form1隐藏结果就根本开不到form2了
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
引用 5 楼 lsxjl 的回复:
额,我是只需要当前只显示form2,让鼠标拖动时候form1一直看不到。
你的form2不是form1的子控件么? 你隐藏form1,那form2肯定看不到。 你想隐藏form1,而form2显示,那么form1和2 不能是父子关系
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
额,我是只需要当前只显示form2,让鼠标拖动时候form1一直看不到。
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
引用 3 楼 lsxjl 的回复:
如果隐藏form1: ShowWindow(SW_HIDE);也就看不到form2了,form2是form1的子form
怎么还这么设计 form1 -> button ↓ form2 -> button 这种关系?
linuxlsx 2013-01-23
  • 打赏
  • 举报
回复
如果隐藏form1: ShowWindow(SW_HIDE);也就看不到form2了,form2是form1的子form
赵4老师 2013-01-23
  • 打赏
  • 举报
回复
到VC/MFC论坛问问?
lee_鹿游原 2013-01-23
  • 打赏
  • 举报
回复
form1有按钮,form2也有按钮, form1隐藏了,form1的按钮怎么可能显示? form1的按钮,是form1的子控件。

16,548

社区成员

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

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

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