Win32 C-动态创建控件的控件ID?

Win32 C-动态创建控件的控件ID?,c,winapi,win32gui,docking,C,Winapi,Win32gui,Docking,我正在尝试创建弹出窗口(如VisualStudio中的可停靠窗格)。我需要创建拆分器控件,以允许在附加控件时调整其大小。我的设计基于MFC对接窗格,我尽量不硬编码对接区域 理想情况下,我不希望有一个固定数量的滑块被创建为隐藏,而是一个可变的数量取决于每个附加窗口的位置。我现在的想法是: 使用SubtractRect()将附加窗口的RECT与有效客户端区域的RECT相减 为不在主窗口有效工作区边缘上的控件的每个边缘创建一个滑块 然而,当使用CreateWindow()时,理想情况下会传入一个控件I

我正在尝试创建弹出窗口(如VisualStudio中的可停靠窗格)。我需要创建拆分器控件,以允许在附加控件时调整其大小。我的设计基于MFC对接窗格,我尽量不硬编码对接区域

理想情况下,我不希望有一个固定数量的滑块被创建为隐藏,而是一个可变的数量取决于每个附加窗口的位置。我现在的想法是:

  • 使用
    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需要唯一。”这句话是正确的,无论父项是否为对话框。