c++ - 无法创建 Win32 文本框来获取用户输入

标签 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。根本没有显示文本框?

最佳答案

CreateWindowEx 的第二个参数必须是预定义的系统类“EDIT”。这指定了您要创建的窗口类型。

然后您的 GetWindowText 需要创建的编辑控件的 HWND。

关于c++ - 无法创建 Win32 文本框来获取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806402/

相关文章:

c++ - '*' 之前的预期主表达式?

c++ - 进程任务异常终止,退出代码 (PM_ASSERT_ERROR)

c++ - 将字节转换为位并将二进制数据写入文件

winapi - 如何以编程方式创建位图?

c++ - 区分具有相同类型和比率的 std::chrono 持续时间?

c++ - 加、减和比较压缩整数

c++ - 拆分没有拆分条的窗口

c# - 如何在win API的creatnamedpipe方法中为非管理员权限帐户添加安全属性

c++ - Wininet 获取发送的 header

c# - 有没有办法通过 SMB 共享上的创建时间来枚举文件?