如何通过它的id获取C ++ MFC控件HANDLE?

时间:2016-02-22 21:19:43

标签: c++ mfc

我有例如IDC_EDIT1 C ++ MFC控件,我该如何处理? 通过哪个Windows API,我可以完成吗?

3 个答案:

答案 0 :(得分:2)

您可以通过调用Windows API函数GetDlgItem获取控件句柄:

  

在指定的对话框中检索控件的句柄。

CWnd类的CWnd::GetDlgItem类成员也有一个重载来检索控件的句柄:

HWND hWnd = NULL;
someWnd->GetDlgItem( IDC_EDIT1, &hWnd );

答案 1 :(得分:2)

CWnd - 派生对象具有GetSafeHwnd成员函数来检索该对象的Windows句柄,因此如果您的控件位于对话框中,则可以检索此句柄:

HWND hwnd = GetDlgItem(IDC_EDIT1).GetSafeHwnd();

答案 2 :(得分:2)

我也希望通过我的两分钱。

  • 由于您处于MFC世界,因此使用指针可能会更好 CWnd比原始HWND。在这种情况下,请使用pWnd = GetDlgItem(IDC_EDIT1)
  • 更进一步,创建一个 使用类向导为您的IDC_EDIT1“控制变量”。那样 你将有一个与该编辑相关联的类成员变量 控制,你不需要掌握它。