如何检查指定的整数是否已被占用?我自己构建了一个模板,专门用于创建窗口控件。我需要一些方法来跟踪孩子ID。例如,模板的用户意外地创建了一个具有相同ID的参数,那么它应该返回错误。那么如何检查子ID是否重复?
为子窗口生成唯一ID的最佳方法是什么?或者我只是#define他们到从某个数字开始的某个整数迭代?它是否会与窗口冲突,例如,我在应用程序中创建另一个独立窗口?
答案 0 :(得分:1)
对于它的价值,您可以使用EnumChildWindows()
枚举子窗口句柄:
http://msdn.microsoft.com/en-us/library/ms633494(v=VS.85).aspx
然后有一个函数可以从名为GetDlgCtrlID()
的句柄中获取子窗口的ID:
http://msdn.microsoft.com/en-us/library/ms645478(v=vs.85).aspx
但是,只有在从模板中实例化窗口后,这才有用。如果要在构建窗口之前检查模板,那将取决于模板格式。
您使用的ID不会在Windows之间发生冲突,因为指示数字的消息将被发送到不同的“父母”。它只是(父,id)对,需要是唯一的。
答案 1 :(得分:0)
我通过实现具有预定ID范围的简单IDManager
类和用于重用free'dID的队列来解决了这个问题。迭代所有子窗口对于每个控件创建来说都是相当重要的事情。