窗体的激活状态

weichaogui 2009-01-07 10:29:45
一个SDI工程,点击菜单弹出一个无模式对话框。
当对话框处于激活状态时,SDI主框架窗口失去了焦点,它的标题栏、菜单栏都成了灰色。
而当SDI主框架窗口处于激活状态时,无模式对话框的标题栏也灰了。
用鼠标在主框架与无模式对话框之间点击切换时,就会让二者的标题栏状态交替呈现“激活-非激活”的变化,
现在我想让它们的标题栏和菜单在切换时都不变灰,让它们看起来像激活了的效果,如何做?
...全文
170 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichaogui 2009-01-08
  • 打赏
  • 举报
回复
我狂晕,我把WM_NCACTIVATE消息加到另一个对话框了,而作测试用的对话框中没有加,死搞了半天,汗~~~
多谢各位的耐心解答。
dch4890164 2009-01-07
  • 打赏
  • 举报
回复
楼上的两个方法都可行!
鉴定完毕
cnzdgs 2009-01-07
  • 打赏
  • 举报
回复
响应WM_NCACTIVATE消息:
return bActive;
feilinhe 2009-01-07
  • 打赏
  • 举报
回复
用CDialogBar创建一个浮动的工具条代替创建非模式对话框就可以了
cnzdgs 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 weichaogui 的回复:]
“响应WM_NCACTIVATE消息:
return bActive;”
这个方法无效啊。有没有其他方法。
[/Quote]
你的代码怎么写的?
fandh 2009-01-07
  • 打赏
  • 举报
回复
现在我想让它们的标题栏和菜单在切换时都不变灰,让它们看起来像激活了的效果,如何做?
这个有点难度,不知道,帮顶了!
hityct1 2009-01-07
  • 打赏
  • 举报
回复
3楼的方法好使。vc6.0通过。

//它的消息映射是手工加入的
//下面两句加到响应位置即可:
// afx_msg void OnNcActivate(BOOL bActive);
// ON_WM_NCACTIVATE()

void CMainFrame::OnNcActivate(BOOL bActive)
{
CFrameWnd::OnNcActivate(TRUE);
dlg.Active();
}


其中Active定义如下:

void CMyDlg::Active()
{
OnNcActivate(TRUE);
}
weichaogui 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Show_Mike 的回复:]
你希望创建一个什么样的界面?要那么多无模式对话框?---->一个设计原则:界面设计永远来自具体应用需求,后者则必须服从操作方便,界面含义清楚明白等原则.
[/Quote]

呵呵,因为有应用需求,所以才需要啊,软件工程大致的设计原则还是知道的。
如何让非激活状态的窗体看起来像是激活了?即是说让非激活窗体的视觉效果跟活动窗体一样。还有别的方法吗?
Show_Mike 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 weichaogui 的回复:]
"用CDialogBar创建一个浮动的工具条代替创建非模式对话框"
这个方法可行,但每个无模式对话框都这样搞,也太烦麻了。
[/Quote]
你希望创建一个什么样的界面?要那么多无模式对话框?---->一个设计原则:界面设计永远来自具体应用需求,后者则必须服从操作方便,界面含义清楚明白等原则.
weichaogui 2009-01-07
  • 打赏
  • 举报
回复
“响应WM_NCACTIVATE消息:
return bActive;”
这个方法无效啊。有没有其他方法。
weichaogui 2009-01-07
  • 打赏
  • 举报
回复
"用CDialogBar创建一个浮动的工具条代替创建非模式对话框"
这个方法可行,但每个无模式对话框都这样搞,也太烦麻了。

15,979

社区成员

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

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