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

Ken*_*ers 2 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;
    }
Run Code Online (Sandbox Code Playgroud)

rod*_*igo 8

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

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

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

MSG msg;
while (GetMessage(&msg))
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果事实证明这是答案,那我真的会羡慕你的精神力量...... (3认同)