Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.
Здравствуйте, Cherny, Вы писали:
C>Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.
А в чем, собственно проблема ? Надо чтобы окно было поверх всех или чтоб оно получило фокус ввода?
Извини, вопрос немного не понятен
Здравствуйте, Cherny, Вы писали:
C>Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.
Да вообще-то должно... Попробуй ShowWindow (SW_SHOWNORMAL). Или в крайнем случае после ShowWindow добавь вызов SetActiveWindow().
Здравствуйте, Cherny, Вы писали:
C>Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.
Попробуй добавить вызов SetForegroundWindow(HWND)
В случае с MFC сделай так AfxGetMainWnd()->SetForegroundWindow();
По крайней мере оно будет мигать на панели задач ...
Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.
Это снова пишет автор вопроса. Я пробовал использовать функции SetActiveWindow() и BringWindowToTop(), но они тоже не помогают, а хочется, чтобы окно стало поверх других и при этом активным.
Здравствуйте, Cherny, Вы писали:
C>Это снова пишет автор вопроса. Я пробовал использовать функции SetActiveWindow() и BringWindowToTop(), но они тоже не помогают, а хочется, чтобы окно стало поверх других и при этом активным.
Топик Offsider'а почитай! SetForegroundWindow(HWND) должно помочь!
Здравствуйте, st0rm, Вы писали:
S>Здравствуйте, Cherny, Вы писали:
C>>Это снова пишет автор вопроса. Я пробовал использовать функции SetActiveWindow() и BringWindowToTop(), но они тоже не помогают, а хочется, чтобы окно стало поверх других и при этом активным.
S>Топик Offsider'а почитай! SetForegroundWindow(HWND) должно помочь!
Ну чего вы на человека набросились. В некоторый случаях обычный вызов SetForegroundWindow(HWND) действительно не помогает. И никакая функция при этом не поможет — разве что мигать в таскбаре будет, но толку от этого мало. Тут нужно поступить по другому. Все что нужно сделать — это вывести окно в topmost, а затем вернуть ему прежнее состояние.
Допустим в случе вывода окна из трея можно сделать так: