- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何通过GetWindowText获取不同语言的文本?我修改了一个白板项目。当用户在白板上输入时,onchange 函数将被调用并将文本显示在白板上。但是,当我键入日语文本(非系统默认语言)时,它显示“?”反而。以下是onchange的代码spine。
void CHBEdit::OnChange()
{
static bool bChanged = true;
CDC *pDC = GetDC();
if (bChanged) {
CString str;
GetWindowText(str);
m_strText = str;
int iStartChar, iEndChar;
GetSel(iStartChar, iEndChar);
CRect rect;
GetWindowRect(&rect);
CFont *Oldfont = (CFont *)pDC->SelectObject(&m_Font);
CSize size = pDC->GetOutputTextExtent(str); //+ "a");
pDC->SelectObject(Oldfont);
SetWindowPos(NULL, 0, 0, size.cx, size.cy, SWP_NOMOVE);
bChanged = false;
SetWindowText(str);
SetSel(iStartChar, iEndChar);
}
else
bChanged = true;
ReleaseDC(pDC);
}
我真的是 C++ 新手。我做了研究并尝试使用 UTF8 unicode 的 GetwindowTextW,但它仍然显示“?”。也许逻辑不对。
如果有人能给我在白板上显示不同语言文本的解决方案,我将不胜感激。谢谢。
最佳答案
GetWindowTextW
是正确的方法。 Windows 使用 UTF16 Unicode 标准,使用 wchar_t
宽字符串。 UTF8 标准通常用于 Linux 和互联网。您可能只有在向其他系统导出/导入数据时才需要 UTF16/UTF8 转换。
如果您创建一个新的 MFC 项目,它将以 Unicode 设置,并且 MFC 函数将默认为 Unicode。示例:
//UNICODE project:
CString str;
GetWindowText(str);
MessageBox(str);
如果项目是 Unicode,这将适用于日语和所有其他语言。
如果您正在使用停留在 ANSI 模式下且无法更改它的遗留 MFC 项目,请使用以下修复方法:
//ANSI project:
CStringW str;
GetWindowTextW(str);
MessageBoxW(str);
关于c++ - 如何通过 GetWindowText 获取不同语言的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326011/
我尝试了以下代码,但它没有从前景窗口检索文本! procedure TForm1.Button1Click(Sender: TObject); var title : pansichar;
我正在编写一个小应用程序,我希望从 Chrome 浏览器中获取 URL。 为了首先检查 Chrome 浏览器是否打开,我使用以下代码: IntPtr WindowTitleTextPtr = Get
我正在尝试学习如何使用 visual studio 为 C++ 制作 GUI。但是我在使用 GetWindowText() 函数时遇到了一些问题。它不会将 LPTSTR 标题更改为文本框中的文本,并且
我想显示对话框的标题: HWND hWnd = ::GetActiveWindow(); char cc[101]; ::GetWindowText(hWnd,cc,100); MessageBox(
我在全局 CBT Hook 过程中使用以下代码: TCHAR title[256]; int getT = GetWindowText(hWnd, title, 256); if (getT == 0
我想弄清楚 GetWindowText 背后的系统调用是什么。我编写了一个简单的程序来调用 GetWindowText,并使用不同进程中的窗口句柄。 int CALLBACK WinMain(HINS
HWND ForeWindow = GetForegroundWindow(); wchar_t WindowTxt[1024] = { L'\0' }; GetWindowTextW(ForeWin
我不太明白 GetWindowText 如何在与调用者相同的线程上为窗口工作。如果 GetWindowText 阻塞直到消息被处理,线程如何调用 DispatchMessage?它已在 GetWind
我试图在我的 Win32 C++ 应用程序的 dialog 中获取 textedit 控件的文本。我正在使用以下代码块来获取它,并对其进行测试。 HWND hCarRegNo = GetDlgItem
我正在尝试使用以下代码获取当前事件窗口的名称: HWND winHandle = GetActiveWindow(); wchar_t buffer[512] = L""; i
如何通过GetWindowText获取不同语言的文本?我修改了一个白板项目。当用户在白板上输入时,onchange 函数将被调用并将文本显示在白板上。但是,当我键入日语文本(非系统默认语言)时,它显示
主窗口上有两个项目和按钮的组合框。组合框: HWND hCombo; hCombo = CreateWindow(L"COMBOBOX", L"combobox", WS_CHILD |
我试图在 C++/Java 中从外部窗口列出并获取编辑控件的内容,不幸的是没有成功。 当我调用 GetWindowText 或 GetWindowTextA 时,它在编辑控件上返回一个空值,我知道 G
我是 Windows 编程的新手。我正在尝试检索窗口的名称。 char NewName[128]; GetWindowText(hwnd, NewName, 128); 我需要使用 char[] 但它
我有这样的代码: IntPtr hwndGetValue = new IntPtr(67904); List windows = GetChildWindows(hwndGetValue); int
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
GetWindowText 函数的返回值为 documented as follows : If the function succeeds, the return value is the leng
我正在用 C 构建一个 Sudoku Win32 应用程序。我猜我对 GetWindowText() 有一些问题,它在未定义的次数内正常工作,但随后应用程序卡住,没有挂起(进程的状态是正常,没有“ap
我正在为我的“正在播放”插件获取 Spotify 的窗口标题,其功能为: GetWindowText(spotify_window_handle, title, title_length) 但输出包含
使用下面的代码 [DllImport("user32.dll", EntryPoint = "GetWindowText", ExactSpelling = false, CharSet =
我是一名优秀的程序员,十分优秀!