无法创建Win32文本框以获取用户输入

时间:2014-11-07 17:07:44

标签: c++ winapi

我想创建一个文本框,用户输入一些文本并单击“确定”,然后在应用程序代码中获取文本。这是我的工作:

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。根本没有文本框出现?

2 个答案:

答案 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

我发现您使用了正确的编辑控件样式,因此我猜测您已经找到了部分文档。正确的班级名称是你缺少的。

(请注意,窗口类名称不区分大小写。)