2

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

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;
    }
4

1 回答 1

9

运用我的精神力量,我会说您在 main 函数中编写了自己的消息循环,并且您没有调用TranslateMessage().

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

所以你的消息循环至少应该有这样的东西:

MSG msg;
while (GetMessage(&msg))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
于 2012-05-26T21:56:43.707 回答