GetWindowTextA 无法获取 ComboBox MFC C++ 的文本

GetWindowTextA unable to get the text of ComboBox MFC C++

我正在使用 GetWindowTextA 获取 ComboBox 的文本,但它将是一个空字符串 "" 即使 hwnd 是正确的。

使用 GetWindowTextA 从其他 class 获取文本时没问题,但它不适用于 class ComboBox。是否与 this 有关,需要其他函数才能从 ComboBox 获取文本?

谢谢。


已编辑:

组合框来自某些其他应用的控件 window

#include<windows.h>
#include<iostream>
using namespace std;

int main() {

        POINT pt;
        Sleep(3000);
        GetCursorPos(&pt);

        HWND hWnd = WindowFromPoint(pt); 

        char class_name[100];
        char title[100];

        GetClassNameA(hWnd,class_name, sizeof(class_name));
        GetWindowTextA(hWnd,title,sizeof(title));

        cout <<"Window name : "<<title<<endl;
        cout <<"Class name  : "<<class_name<<endl;

        return 0;

}

如果您已将 CComboBox 变量添加到对话框 class,使用“添加控件变量”向导,如此处所述Add a member variable,您可以轻松地使用 CComboBox 方法检索所选组合项的文本,如下图所示:

void CMFCDlgAppDlg::OnBnClickedButton1()
{
    CString itemText;
    m_Combo.GetLBText(m_Combo.GetCurSel(), itemText);
    AfxMessageBox(itemText);
}

添加 TCHAR szBuf[100]; 和使用 SendMessage 将完成。

#include<windows.h>
#include<iostream>
using namespace std;

int main() {

        POINT pt;
        Sleep(3000);
        GetCursorPos(&pt);

        HWND hWnd = WindowFromPoint(pt); 

        char class_name[100];
        char title[100];
        TCHAR szBuf[100];

        GetClassNameA(hWnd,class_name, sizeof(class_name));
        GetWindowTextA(hWnd,title,sizeof(title));
        SendMessage(hWnd, WM_GETTEXT, 100, (LPARAM)szBuf);

        //cout <<"Window name : "<<title<<endl;
        cout <<"Class name  : "<<class_name<<endl;
        wcout <<"Window name  : "<<szBuf<<endl;

        system("PAUSE");
        return 0;

}