Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从编辑控件读取文本_C++_Winapi_Controls_Win32gui - Fatal编程技术网

C++ 从编辑控件读取文本

C++ 从编辑控件读取文本,c++,winapi,controls,win32gui,C++,Winapi,Controls,Win32gui,我想阅读用户在编辑控件中键入的文本。 输入文本并按下按钮后,我想获取文本并将其作为一项添加到组合框中。 这就是我在父对话框的WM\u命令中所做的: case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED) { if ((HWND)lParam == Button[0]) { int len = GetWindowTextLengthW(Button[2]) + 1;

我想阅读用户在编辑控件中键入的文本。 输入文本并按下按钮后,我想获取文本并将其作为一项添加到组合框中。 这就是我在父对话框的
WM\u命令中所做的:

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]));
std::vector str(len);
GetWindowTextW(按钮[2],&str[0],str.size());
SendMessageW(按钮[1],CB_ADDSTRING,0,重新解释强制转换(&str[0]);

按钮[2]
是如何初始化的?您可能应该使用
SendMessageW
。当createWindow创建编辑框时,按钮[2]包含编辑框的句柄
按钮[2]=CreateWindowW(L“edit”,NULL,WS_CHILD,WS|u VISIBLE,WS|u OVERLAPPED,WS|u BORDER,windowWidth-(windowWidth),windowHeight,windowHeight,handlW,(hu)ID|edit,instnc,NULL)抱歉,我的意思是说
text
>。>这是一个全局
LPWSTR
发送消息w
没有效果。
文本
的定义类似于
LPWSTR文本lpwstrtext=L“myText”;它总是将
myText`添加到组合框中,无论用户在编辑控件中输入了什么,您都会锁定它。非常感谢你。我怎么能像你一样精通这方面?这个问题花费了我太多时间,虽然我大部分时间都在用C++。@ USS66222,通过C++来浏览新的问题。除了做事,这几乎就是我的故事。winapi方面主要是经验,是新老事物的一部分。