【问题标题】:How to get control id from its handle?如何从其句柄中获取控件 ID?
【发布时间】:2011-11-30 09:35:02
【问题描述】:

给定句柄如何获得控件的 id?

我想在 ListView 控件的标题上设置一个工具提示。据我所知,我需要一个要添加此工具提示的控件的 ID。如MSDN 中所述。

【问题讨论】:

    标签: winapi visual-c++


    【解决方案1】:

    要回答您的直接问题,GetDlgCtrlID()

    请注意,您链接到的示例会立即将 toolID 再次转换回句柄,从而使您的调用变得多余。

    【讨论】:

      【解决方案2】:

      这是我为此编写的一个简单方法:

      // get identifier to a window
      void showWindowID(HWND windowTarget) {
          int theID = GetDlgCtrlID(windowTarget);
      
          wchar_t text_buffer[100] = { 0 }; 
      
          // convert
          swprintf(text_buffer, _countof(text_buffer), L"%d", theID); 
      
          // print to console
          //OutputDebugString(text_buffer); 
      
          // output result to a messagebox
          MessageBox(nullptr, text_buffer, L"The ID", MB_OK);
      }
      

      【讨论】:

        【解决方案3】:

        使用ListView_GetHeader() 来获取ListView 的Header 控件的HWND(它将替代您链接到的示例中的GetDlgItem() 调用)。不需要获取 Header 的 Control ID。

        【讨论】:

        • 如果您正在编写返回控件 ID 的自定义提供程序,那么说“您不需要控件 ID”是没有用的。请回答问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-09
        • 2010-12-25
        • 2014-05-22
        • 2011-02-26
        • 1970-01-01
        • 2023-01-26
        相关资源
        最近更新 更多