我正在研究MFC C ++应用程序。我正在开发一个SystemMenu
属性设置为FALSE
的对话框,因此它无法最大化。我想处理标题栏上的双击消息。我怎么能这样做?
编辑:
我希望这次对每个人都清楚。我有一个没有系统菜单(和系统按钮或图标)的对话框。当用户双击该对话框的标题栏时,我希望程序调用函数x();
。
答案 0 :(得分:5)
从技术上讲,您必须处理WM_NCLBUTTONDBLCLK并检查是否在窗口的标题区域中发生了双击,可能是通过发送WM_NCHITTEST并测试返回值是{{1} }。
(更新:正如JohnCz正确指出的那样,发送HTCAPTION
实际上并不是必需的,因为WM_NCHITTEST
已将结果载入WM_NCLBUTTONDBLCLK
。)
然后,您只需将wParam
SC_MAXIMIZE
wParam
发送到窗口即可最大化。
然而,在实践中,如果您的对话框尚未准备好处理大小更改并相应地布局其控件,则它将无法实现。上次我查看时,MFC中没有开箱即用。
答案 1 :(得分:1)
我认为这里存在某种混淆:
FrédéricHamidi
你是对的,处理WM_NCLBUTTONDBLCLK消息是正确的方法,但是没有必要调用HitTest,因为WM_NCLBUTTONDBLCLK消息提供了MFC框架在WM_NCLBUTTONDBLCLK处理程序中转换的命中信息。
<强>维克多,强>
您试图通过处理WM_NCLBUTTONDBLCLK消息实现了什么?
一旦你向我们说清楚,也许还有其他方法可以满足你的要求。 您没有系统菜单这一事实并不会阻止您的应用接收非客户区消息。