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()は、キーメッセージをcharメッセージに変換する責任があります(いいえ、それは自動的には行われません:-)。WM_CHAR最終的に、EDITウィンドウ(すべてのウィンドウ)はメッセージを受信しません。

したがって、メッセージループには少なくとも次のようなものが必要です。

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