Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何判断WTL中子窗口的状态何时更改?_C++_Winapi_Wtl - Fatal编程技术网

C++ 如何判断WTL中子窗口的状态何时更改?

C++ 如何判断WTL中子窗口的状态何时更改?,c++,winapi,wtl,C++,Winapi,Wtl,我已经使用WTL编写了一个简单的GUI: 就设置窗口而言,我已经弄清楚了所有的事情,还连接了菜单等,可以随意调用。但我需要知道,例如,有人何时选中列表视图中的某个复选框,或者有人何时单击按钮 这些子窗口是否会向主窗口发送一条消息,通知状态更改,并且子窗口类型之间的通知通常是一致的?子窗口通知通常以或消息的形式发送到父窗口 一些子通知在大多数控件类型中都很常见(例如,NM\u CLICK和NM\u CUSTOMDRAW),但一般来说,您需要查看MSDN上每个控件类型的通知参考,以查看可用的通知。

我已经使用WTL编写了一个简单的GUI:

就设置窗口而言,我已经弄清楚了所有的事情,还连接了菜单等,可以随意调用。但我需要知道,例如,有人何时选中列表视图中的某个复选框,或者有人何时单击按钮


这些子窗口是否会向主窗口发送一条消息,通知状态更改,并且子窗口类型之间的通知通常是一致的?

子窗口通知通常以或消息的形式发送到父窗口


一些子通知在大多数控件类型中都很常见(例如,
NM\u CLICK
NM\u CUSTOMDRAW
),但一般来说,您需要查看MSDN上每个控件类型的通知参考,以查看可用的通知。首先,listview通知的引用是,按钮通知是。

子通知通常以或消息的形式发送到父窗口


一些子通知在大多数控件类型中都很常见(例如,
NM\u CLICK
NM\u CUSTOMDRAW
),但一般来说,您需要查看MSDN上每个控件类型的通知参考,以查看可用的通知。首先,listview通知的参考是,按钮通知是。

并非通用。一些通知(大部分是旧的)通过
WM_命令发送
@Billy:StandardListView控件通过扩展样式支持复选框。我没有看过WTL的源代码,但我认为它使用了上述风格,而不是做任何自定义的事情。我编辑了/universal/to/general/因为偶尔会有例外,例如
WM\HSCROLL
。不普遍。一些通知(大部分是旧的)通过
WM_命令发送
@Billy:StandardListView控件通过扩展样式支持复选框。我没有看过WTL的源代码,但我认为它使用了上述风格,而不是做任何自定义的事情。我编辑了/universal/to/general/因为偶尔会有例外,比如
WM\u HSCROLL
。如果你用WTL编程,你最好的朋友就是Spy++。记住它!:-)(这是一个包含在Visual Studio中的工具。我想它不是安装在“标准”安装中的)@xanatos:我应该用它做什么p你启动它:-)你启动了你想监视的应用程序。您只需执行窗口->刷新即可。Spy->Log Messages,使用Finder工具“查找”窗口(通常选择控件的父控件),从message选项卡中选择的所有消息开始,然后单击Ok。然后你会看到它捕获了一百万条无用的消息,你开始禁用它们(WM_MOUSEMOVE,WM_MOUSELEAVE…)(你可以右键点击一条消息并选择Stop Logging message)。您将发现“旧”Winapi控件背后的世界。WPF/Silverlight控件是另一个世界。其他可能性(通常更好)。从“窗口”窗口开始。窗口->刷新。您可以使用“查找”窗口的按钮。您可以找到窗口的控件。好啊在“属性检查器”中,单击“同步”。现在控件在窗口中被“选中”。从那里你可以找到它的父母/孩子/兄弟姐妹,右键单击其中一个,Messages。如果你用WTL编程,你最好的朋友是Spy++。记住它!:-)(这是一个包含在Visual Studio中的工具。我想它不是安装在“标准”安装中的)@xanatos:我应该用它做什么p你启动它:-)你启动了你想监视的应用程序。您只需执行窗口->刷新即可。Spy->Log Messages,使用Finder工具“查找”窗口(通常选择控件的父控件),从message选项卡中选择的所有消息开始,然后单击Ok。然后你会看到它捕获了一百万条无用的消息,你开始禁用它们(WM_MOUSEMOVE,WM_MOUSELEAVE…)(你可以右键点击一条消息并选择Stop Logging message)。您将发现“旧”Winapi控件背后的世界。WPF/Silverlight控件是另一个世界。其他可能性(通常更好)。从“窗口”窗口开始。窗口->刷新。您可以使用“查找”窗口的按钮。您可以找到窗口的控件。好啊在“属性检查器”中,单击“同步”。现在控件在窗口中被“选中”。从那里你可以找到它的父母/孩子/兄弟姐妹,右键单击其中一个,Messages。