【问题标题】:Get CButton control name from resource id?从资源 id 获取 CButton 控件名称?
【发布时间】:2020-01-24 11:39:21
【问题描述】:

我正在使用 C++ MFC,并创建了一个带有 CButton 的简单对话框,每个 CButton 都在 .rc 脚本文件中映射到其 .bitmap 文件和资源 ID (ID_BUTTON*)。

类似的行出现在我的 .rc 文件中,在 DIALOG 描述中:

CONTROL         "TEST|Button7",ID_BUTTON2,"Button",BS_OWNERDRAW | WS_TABSTOP,234,29,30,71

在我的项目中,我试图获取每个 CButton 对象的资源 ID。我是这样做的:

int getID = this->GetDlgCtrlID();

但是如何进一步使用我的资源 ID 来获取 CButton 控制文本值?意思是:

"TEST|Button7"

如果没有,有具体的获取方式吗?

【问题讨论】:

  • 您的问题令人困惑,因为您提到的“资源名称”肯定是ID_BUTTON2。也许您应该重新措辞,因为您接受的答案向您展示了如何获取与控件关联的文本值,该值与资源名称不同。
  • 然后改为控制名称。对于那个很抱歉 !对 MFC 还是新手,我很容易出现拼写错误。

标签: c++ visual-studio user-interface mfc cbutton


【解决方案1】:

其实很简单。在您使用int getID = this->GetDlgCtrlID(); 获取资源ID 的地方,您可以使用此代码获取控件的名称:

CString buttonName;
this->GetWindowText(buttonName);

PS:假设调用是在类成员函数内部进行的,那么您实际上并不需要 this-> 指针;只需调用GetWindowText()GetDlgCtrlID() 函数。 (但使用this-> 并没有坏处,并且可以使代码更清晰易读。)

如果您想从按钮自己的类函数外部获取按钮的文本 - 例如,从父对话框处理程序,您可以使用:

CString buttonName;
GetDlgItem(idValue)->GetWindowText(buttonName);

idValue 是相关按钮(或任何其他控件)的资源 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2015-10-09
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多