Win32 C-动态创建控件的控件ID?
我正在尝试创建弹出窗口(如VisualStudio中的可停靠窗格)。我需要创建拆分器控件,以允许在附加控件时调整其大小。我的设计基于MFC对接窗格,我尽量不硬编码对接区域 理想情况下,我不希望有一个固定数量的滑块被创建为隐藏,而是一个可变的数量取决于每个附加窗口的位置。我现在的想法是:Win32 C-动态创建控件的控件ID?,c,winapi,win32gui,docking,C,Winapi,Win32gui,Docking,我正在尝试创建弹出窗口(如VisualStudio中的可停靠窗格)。我需要创建拆分器控件,以允许在附加控件时调整其大小。我的设计基于MFC对接窗格,我尽量不硬编码对接区域 理想情况下,我不希望有一个固定数量的滑块被创建为隐藏,而是一个可变的数量取决于每个附加窗口的位置。我现在的想法是: 使用SubtractRect()将附加窗口的RECT与有效客户端区域的RECT相减 为不在主窗口有效工作区边缘上的控件的每个边缘创建一个滑块 然而,当使用CreateWindow()时,理想情况下会传入一个控件I
SubtractRect()
将附加窗口的RECT
与有效客户端区域的RECT相减
CreateWindow()
时,理想情况下会传入一个控件ID,该ID通常在Resource.h
中硬编码,这使得控件的动态创建变得棘手。更不用说根据滑块的位置重新计算窗口大小了
我曾考虑分配一个ID范围用于动态控制,这样我就可以从定义IDC#U SPLITTER1 100开始,然后为创建的每个拆分器从该值开始递增。我已经看到\u APS\u NEXT\u RESOURCE\u VALUE
提到过,我相信它在MFC中使用,但只用于IDE
对不起,如果这个问题有点含糊不清,我真的很难理解
谢谢。欢迎您使用任何算法动态生成ID。例如,您可能决定所有固定ID都在100-999范围内,而所有动态ID都从1000开始。怎么做完全取决于你。你必须给他们身份证吗?窗格通常位于非对话框主窗口内,因此不希望它们具有ID。使用UI控件时不需要控件ID,尤其是在代码中动态创建控件时。您真正需要的只是HWNDs。@是的,您必须为任何子窗口分配一个ID。
CreateWindow
的签名不允许您忽略该值。@yak这正是我所描述的:“您对是否使用ID没有发言权,但您可以决定哪些ID需要唯一。”这句话是正确的,无论父项是否为对话框。