100分提问:如何让一个对话框显示在所有对话框的上面?

iamwiner 2004-11-21 06:07:39
1.如何让一个对话框显示在所有对话框的上面?
例如:一个对话框程序,打开了几个子对话框(非模式的),如何让其中一个显示在其它的对话框的上面?

2.如何让一个对话框,只显示其中的文字?
例如:一个对话框程序,打开了一个子对话框,子对话框中,用OnPaint()函数输出了一段文字,如何隐藏这个对话框的其它部分?
注意是所有的其它部分,即除开文字之外的部分,使它看起来就像是在父对话框上用OnPaint() 函数输出一样!

大哥们:可以实现么?
...全文
273 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2004-11-26
  • 打赏
  • 举报
回复
在OnCtlColor中设置背景色
oyljerry 2004-11-26
  • 打赏
  • 举报
回复
::SetWindowPos(hwnd,&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
aoosang 2004-11-26
  • 打赏
  • 举报
回复
关注
mynamelj 2004-11-26
  • 打赏
  • 举报
回复
dialog.SetWindowPos(&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);


// SetWindowPos(hwnd,&this->wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
fallhunter 2004-11-25
  • 打赏
  • 举报
回复
1。
setwindowspos

第二个

还是不要这么做,那样毕竟是两个窗口,
如果用户在切换时,就穿帮了!

建议你在父框里动态创建透明子窗口,你可以自己写这个窗口类
Gabe 2004-11-25
  • 打赏
  • 举报
回复
HBRUSH CTextOutputDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor==CTLCOLOR_DLG || nCtlColor==CTLCOLOR_STATIC )
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH b=(HBRUSH)GetStockObject(NULL_BRUSH);
return b;
}
return hbr
}
你把这个复制上去。要显示字的时候就更改STATIC上的字。不过我估计你这样做屏会闪的
Gabe 2004-11-25
  • 打赏
  • 举报
回复
不是和你说了用OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)这个函数了
OnPaint()是不行的

另: CProPageTransparent proPageTransparent;
hr = proPageTransparent.OnCtlColor(&pDC, this, CTLCOLOR_STATIC);
你这二句什么意思?
OnCtlColor()当然要用主对话框来调用 。
iamwiner 2004-11-22
  • 打赏
  • 举报
回复
TO:ChenGang521(^_^开心就好^_^(BOY))
我试了一下,好像不行啊!窗口的背景色还是有的!还是明显看得到窗口!怎么办啊?
我的OnPaint()函数是:
void CTextOutputDlg::OnPaint()
{
//CDialog::OnPaint();
CPaintDC pDC(this);
CBrush *br, *pOldBrush;
HBRUSH hr;
//pDC.SetBkMode(TRANSPARENT);
//pDC.TextOut(10,10,"afdfdasfkdjflkdlafjlas;");
CProPageTransparent proPageTransparent;
hr = proPageTransparent.OnCtlColor(&pDC, this, CTLCOLOR_STATIC);
br = CBrush::FromHandle(hr);
pOldBrush = pDC.SelectObject(br);
pDC.TextOut(10,10,"afdfdasfkdjflkdlafjlas;");
pDC.SelectObject(pOldBrush);
br->DeleteObject();
}
WorldMobile 2004-11-21
  • 打赏
  • 举报
回复
实现肯定没问题,一楼说的有道理
MuseIn 2004-11-21
  • 打赏
  • 举报
回复
up
volovo2002 2004-11-21
  • 打赏
  • 举报
回复
肯定是文件头没有包括进去啦,你查查MSDN的错误代码
iamwiner 2004-11-21
  • 打赏
  • 举报
回复
弱弱的问:调用SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
的时候,VC怎么说wndTopMost undeclared identifier?
yanw0212 2004-11-21
  • 打赏
  • 举报
回复
你的窗口是从CWnd 继承的,可以直接调用
SetWindowPos(&wndTopMost,-1,-1,-1,-1,SWP_NOMOVE|SWP_NOSIZE);

第二个问题我不太清楚!
iamwiner 2004-11-21
  • 打赏
  • 举报
回复
TO:ChenGang521
非常感谢你的帮助!
等下我试一下!

是这样的:我想在全屏播放的FLASH上动态的显示一些文字.
我建了一个DIALOG对话框,上面放了一个CShockwaveFlash控件(安装FLASH时提供的,播放FLASH之用!)
然后全屏播放,开始,我用DIALOG的OnPaint()函数写文字,结果被FLASH挡住了,看不到!
我不知道怎么办了!就想到了上述的办法
但苦于我VC水平太差,有些东西实现不了!

你觉得这种方法可行吗?
或者你认为还有什么更好的方法吗?谢谢了!
Gabe 2004-11-21
  • 打赏
  • 举报
回复
1、SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);

2、把所有东西都做透明就行了 
HBRUSH CProPageCH2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CPropertyPage::OnCtlColor(pDC, pWnd, nCtlColor);

if(nCtlColor==CTLCOLOR_DLG || nCtlColor==CTLCOLOR_STATIC )
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH b=(HBRUSH)GetStockObject(NULL_BRUSH);
return b;
}
return hbr
}
为何要这样做?第2个问题
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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