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;
}
我正在使用 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;
}