Проблема с переключением приложения и фокуса - PullRequest
0 голосов
/ 12 августа 2011

Извините, но мой английский очень плохой.

Я пишу программу winapi на языке c, и у меня возникла проблема.Программа имеет главное окно и НЕ ДИАЛОГ дочерних окон (элементов управления).Элементы управления напрямую прикреплены к главному окну.Когда я переключаю приложение на другое приложение и снова возвращаюсь, фокус устанавливается на главное окно, а не на элемент управления, которому принадлежит фокус до переключения.

Мой цикл сообщений:

while ((rGetMessage = GetMessage(&msg, NULL, 0, 0)) != 0 && rGetMessage != -1)
{
    if(!IsDialogMessage(hwnd_principal, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

В чем моя ошибка?

Я использую функцию IsDialogMessage для работы различных клавиш (например, клавиши TAB в элементах управления).

1 Ответ

0 голосов
/ 12 августа 2011

Когда вы вернетесь к своему приложению, Windows по умолчанию установит фокус клавиатуры на свое главное окно, независимо от того, какое окно имело фокус, когда оно было деактивировано. Если вы хотите сделать что-то другое, вам нужно обработать WM_ACTIVATE и использовать SetFocus(), чтобы восстановить фокус на элементе управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...