获得标题栏双击



我正在开发一个MFC c++应用程序。我正在开发一个对话框,它将SystemMenu属性设置为FALSE,因此它没有最大化的能力。我想处理标题栏上的双击消息。我该怎么做呢?

编辑:

我希望这次大家都能明白。我有一个对话框,没有系统菜单(和系统按钮或图标)。当用户双击该对话框的标题栏时,我希望程序调用函数x();

从技术上讲,您必须处理WM_NCLBUTTONDBLCLK并检查双击是否发生在窗口的标题区域,可能通过发送WM_NCHITTEST并测试返回值为HTCAPTION

(更新:正如JohnCz正确指出的那样,实际上没有必要发送WM_NCHITTEST,因为WM_NCLBUTTONDBLCLK已经在wParam中携带了它的结果。)

那么你只需要将wParam中的SC_MAXIMIZE的WM_SYSCOMMAND发送到窗口以最大化它。

但是,在实践中,如果您的对话框没有准备好处理大小更改并相应地布局其控件,那么它将不会实现太多。

我想这里有一些混淆:

弗雷德里克·哈米迪

你是正确的,处理WM_NCLBUTTONDBLCLK消息是正确的方法,但是没有必要调用HitTest,因为WM_NCLBUTTONDBLCLK消息传递了MFC框架在WM_NCLBUTTONDBLCLK处理程序中转换的命中信息。

Victor,

到底是什么,你正试图通过处理WM_NCLBUTTONDBLCLK消息实现?

如果你方明确了要求,也许还有别的办法可以满足你方的要求。事实上,你没有系统菜单,并不能阻止你的应用程序接收非客户端区域的消息。

最新更新