0

ユーザーが編集コントロールに入力したテキストを読みたい。テキストを入力してボタンを押した後、テキストを取得してアイテムとしてコンボボックスに追加したい。これは私がWM_COMMAND親ダイアログで行っていることです:

case WM_COMMAND:

    if(HIWORD(wParam) == BN_CLICKED)
    {
        if ((HWND)lParam == Button[0])
        {



                int len = GetWindowTextLengthW(Button[2]) + 1;
                GetWindowTextW(Button[2], text, len);
                SendMessage(Button[1],(UINT) CB_ADDSTRING,(WPARAM) 0,(LPARAM) text);

                }
        }


    return 0;

NULL「テキスト」変数に入ることもあれば、ユーザーが入力した文字列の最初の文字だけを取得することもあれば、奇妙な ASCII のような文字を取得することもあります。私は何を間違っていますか?何か案は ?

4

1 に答える 1

1

文字列にメモリを割り当てる必要があります。C++03 でそれを行うと予想される方法は次のとおりです。

std::vector<wchar_t> str(len);
GetWindowTextW(Button[2], &str[0], str.size());
SendMessageW(Button[1], CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(&str[0]));
于 2013-06-01T23:49:09.900 に答える