从编辑控件读取文本

read text from edit control

本文关键字:取文本 读取 控件 编辑      更新时间:2023-10-16

我想读取用户在Edit控件中键入的文本。在输入文本并按下按钮后,我想获得文本并将其作为项目添加到组合框中。这就是我在父对话框的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;

但是事情出错了,有时我在"text"变量中得到NULL,有时只是用户输入的字符串的第一个字符,有时是奇怪的ASCII字符。我做错了什么?有什么想法吗?

您需要为字符串分配内存。下面是在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]));