c ++文本框不允许您键入

时间:2012-05-26 21:42:54

标签: c++ winapi

我正在创建一个简单的聊天程序,客户端可以将消息发送到服务器,显示收到的消息。出于某种原因,我无法输入文本框,即使它未设置为只读。没有我发布整个代码,任何人都可以看到简单的错误吗?这是我创建文本框的地方:

static HWND text;

switch(msg)
{
    case WM_CREATE:
    {
        text = CreateWindow(TEXT("Edit"), TEXT("Enter text here..."),
                     WS_VISIBLE | WS_CHILD | WS_BORDER,
                     0, 0, 300, 25,
                     hwnd, (HMENU) ID_EDIT, NULL, NULL);

        CreateWindow(TEXT("Button"), TEXT("Post"),
                     WS_VISIBLE | WS_CHILD,
                     310, 0, 70, 25,
                     hwnd, (HMENU) ID_POST, NULL, NULL);

        CreateWindow(TEXT("Button"), TEXT("Connect"),
                     WS_VISIBLE | WS_CHILD,
                     0, 35, 70, 25,
                     hwnd, (HMENU) ID_CONNECT, NULL, NULL);

        break;
    }

1 个答案:

答案 0 :(得分:8)

运用我的智力,我会说你在主函数中编写了自己的消息循环,并且你没有调用TranslateMessage()

函数TranslateMessage()负责将关键消息转换为char消息(不,这不是自动完成的:-)。最终结果是您的EDIT窗口(所有窗口)都没有收到WM_CHAR条消息。

所以你的消息循环至少应该是这样的:

MSG msg;
while (GetMessage(&msg))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}