メインウィンドウに2つのアイテムとボタンがあるコンボボックスがあります。コンボボックス:GetWindowTextを使用してバッファ内に間違ったシンボルが表示される
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;
私は bufは変数を参照してくださいMSVS2010にブレークポイントを使用しています。それは中国の記号が含まれています!メッセージボックスにが空のメッセージ(タイトル「エラー」)。私は英語のテキストを見たい。なにが問題ですか?
このコード
nIndex = SendMessage(hCombo, CB_GETCURSEL, 0, 0);
SendMessage(hCombo, CB_GETLBTEXT, nIndex, (LPARAM)buf);
は、同じ中国のシンボルで BUF を埋め
SOLUTION:
hCombo =のcreateWindow(L "COMBOBOX"、L "コンボボックス"、 WS_CHILD | WS_VISIBLE | CBS_SORT | CBS_DROPDOWNLIST、 10,55,232,500、hWnd、(HMENU)IDC_COMBO、hInstance、0);
このコード:nIndex = SendMessage(hCombo、CB_GETCURSEL、0、0); SendMessage(hCombo、CB_GETLBTEXT、nIndex、(LPARAM)buf); bufを同じ中国語記号で塗りつぶします – NieAR
中国語として参照する文字は、実際には初期化されていないバッファです。最初の文字はおそらくゼロで、これにより戻り値は空の文字列になります。これには独自の理由があります - 間違ったハンドルなど –
はい。最初の文字はゼロです – NieAR