您的位置:程序门 -> vc/mfc -> 界面



对话框如何像菜单一样,当鼠标点击对话框以外的界面的时候,就自动隐藏或者关闭?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


对话框如何像菜单一样,当鼠标点击对话框以外的界面的时候,就自动隐藏或者关闭?[已结贴,结贴人:csdnhbc20]
发表于:2007-06-21 09:23:00 楼主
如题?

我想利用对话框上放置控件方便的优势,又想利用cmenu自动隐藏的功能,就像windows的开始菜单一样。

有一种方案,从cdialog和cmenu派生一个子类,不知道可行否?
愿闻大家高见,少走弯路。出招有分。
发表于:2007-06-21 09:52:271楼 得分:20
增加一个wm_killfocus的消息处理函数,然后增加:

showwindow(sw_hide);就可以了
发表于:2007-06-21 10:03:272楼 得分:20
在控件失去焦点的消息函数处理,或隐藏或最小化
发表于:2007-06-21 10:17:193楼 得分:20
嘿嘿
你怎么显示回来…………
还要加托盘图标或热键了
发表于:2007-06-21 10:57:164楼 得分:20
增加一个wm_killfocus的消息处理函数,然后增加:

showwindow(sw_hide);就可以了
发表于:2007-06-21 11:11:315楼 得分:20
创建非模态对话框,
-------------------------------------
cxxxdlg   *pdlg=new   cxxxdlg;
pdlg-> create(idd_xxxxxx);
-------------------------------------
判断鼠标位置,
如在对话框外,则showwindow(sw_hide);
发表于:2007-06-21 17:26:536楼 得分:0
加托盘图标很容易实现。
    加kill_focus消息,我实验了:
    当鼠标焦点在别的窗口上的时候,应用程序不响应wm_killfocus消息。(也许还要做别的处理吧!我只是简单的加上了消息映射)

    楼上的(miaoshengwu)说判断鼠标位置,倒是可行,但是这肯定要安装个钩子来截获鼠标消息,感觉有些会破坏os系统的正常工作。

    不知道mfc的menu如何实现的呢?还有没有更好的主意呢?

   


快速检索

最新资讯
热门点击