gpt4 book ai didi

c++ - 使用 GetWindowText 缓冲区中的错误符号

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:39 26 4
gpt4 key购买 nike

主窗口上有两个项目和按钮的组合框。组合框:

HWND hCombo;
hCombo = CreateWindow(L"COMBOBOX", L"combobox",
WS_CHILD | WS_VISIBLE | CBS_SORT | CBS_DROPDOWNLIST,
10, 55, 232, 500, hWnd, 0, hInstance, 0);

const wchar_t *langEnglish = L"English";
const wchar_t *langRussian = L"Russian";
SendMessage(hCombo, CB_ADDSTRING, 0, (LPARAM)langEnglish);
SendMessage(hCombo, CB_ADDSTRING, 0, (LPARAM)langRussian);
SendMessage(hCombo, CB_SETCURSEL, 0, 0);

我试图通过单击按钮在 WndProc 中获取选定的项目文本:

case WM_COMMAND:                                            
{
switch(LOWORD(wParam))
{
case IDC_BUTTON_OK:
wchar_t buf[10];
hCombo = GetDlgItem(hWnd, IDC_COMBO);
GetDlgItemText(hCombo, IDC_COMBO, (LPWSTR)buf, 10);
MessageBox(hWnd, (LPCWSTR)buf, NULL, MB_OK);
break;
}

} break;

我在 MSVS2010 中使用断点来查看 buf 变量。它包含中文符号!!!消息框显示 消息(标题为“错误”)。我想看英文文本。怎么了?

这段代码

nIndex = SendMessage(hCombo, CB_GETCURSEL, 0, 0);
SendMessage(hCombo, CB_GETLBTEXT, nIndex, (LPARAM)buf);

用相同的中文符号填充buf

解决方案:
hCombo = CreateWindow(L"组合框", L"组合框", WS_CHILD | WS_VISIBLE | CBS_排序 | CBS_DROPDOWNLIST, 10, 55, 232, 500, hWnd, (HMENU)IDC_COMBO, hInstance, 0);

最佳答案

为了从 CBS_DROPDOWNLIST 样式的组合框中获取当前选中的项目,您需要 CB_GETCURSEL得到选择指数然后CB_GETLBTEXT获取字符串。

关于c++ - 使用 GetWindowText 缓冲区中的错误符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com