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方面主要是经验,是新老事物的一部分。