我想创建一个文本框,用户输入一些文本并单击“确定”,然后在应用程序代码中获取文本。这是我的工作:
HWND handle_textbox = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", message.c_str(), WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT,
CW_USEDEFAULT, CW_USEDEFAULT, 200, 24, GetActiveWindow(), (HMENU)(101), (HINSTANCE)GetWindowLong (GetActiveWindow(), GWL_HINSTANCE), NULL);
::ShowWindow(handle_textbox, SW_SHOWDEFAULT);
DWORD err = GetLastError();
char output[512];
GetWindowText(handle_textbox, output, 512);
return std::string(output);
但没有任何反应,GetLastError()
返回0
。根本没有文本框出现?
答案 0 :(得分:2)
CreateWindowEx的第二个参数必须是预定义的系统类“EDIT”。这指定了您尝试创建的窗口类型。
然后你的GetWindowText需要创建的编辑控件的HWND。
答案 1 :(得分:1)
CreateWindowEx()
的第二个参数是窗口类:一个表示控件类型内部名称的字符串。您在打开主窗口时创建了一个;这是您为WNDCLASS
结构lpszClassName
字段提供的字符串。
user32.dll中有几个预定义的窗口类。 Their names are listed on the MSDN page for CreateWindowEx()
,在备注下。
文本框类的名称为Edit
,而不是Input Text
。
我发现您使用了正确的编辑控件样式,因此我猜测您已经找到了部分文档。正确的班级名称是你缺少的。
(请注意,窗口类名称不区分大小写。)