控件的窗口句柄和controlID之间有什么区别

时间:2013-10-09 14:55:33

标签: winapi x86

我正在学习Win32程序集。有一些问题我搜索但不合适的结果。

任何人都可以向我解释控件的窗口句柄和controlID之间有什么区别。

1 个答案:

答案 0 :(得分:2)

他们没有任何共同之处。每个窗口都有一个句柄,由CreateWindowEx()返回。这样的窗口可以附加一些额外的属性,如菜单句柄。 CreateWindowEx()中的hMenu参数。如果窗口没有菜单,子窗口将没有菜单,那么您可以使用该参数传递任意其他位数据。它将被分配给GWLP_ID属性(请参阅GetWindowLongPtr)。另请注意GWLP_USERDATA,这是您完全可以使用的额外属性。

对话框利用了这一点,您在资源编辑器中创建的对话框模板为您提供了对子控件进行编号的方法。使用像GetDlgItem()这样的辅助函数来获取具有特定数字的控件的句柄。这对于对话框来说非常必要,因为它是从对话框模板创建子控件的Windows,所以你自己不知道它们的窗口句柄。