从资源 ID 获取 CButton 控件名称?

Get CButton control name from resource id?

我正在使用 C++ MFC,并使用 CButtons 创建了一个简单的对话框,每个 CButtons 都映射到 .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"

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

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

CString buttonName;
this->GetWindowText(buttonName);

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

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

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

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