ShowWindow (SW_SHOW)
От: Cherny  
Дата: 28.12.03 17:48
Оценка:
Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.
Re: ShowWindow (SW_SHOW)
От: Terber Россия  
Дата: 28.12.03 18:09
Оценка:
Здравствуйте, Cherny, Вы писали:

C>Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.


А в чем, собственно проблема ? Надо чтобы окно было поверх всех или чтоб оно получило фокус ввода?
Извини, вопрос немного не понятен
Re: ShowWindow (SW_SHOW)
От: HeaveN Россия  
Дата: 28.12.03 18:15
Оценка:
Здравствуйте, Cherny, Вы писали:

C>Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.


Да вообще-то должно... Попробуй ShowWindow (SW_SHOWNORMAL). Или в крайнем случае после ShowWindow добавь вызов SetActiveWindow().
... << RSDN@Home 1.1.2 beta 2 >>
Нет такого закона, что человеку летать нельзя...
Re: ShowWindow (SW_SHOW)
От: Offsider Украина  
Дата: 28.12.03 19:06
Оценка: 2 (1)
Здравствуйте, Cherny, Вы писали:

C>Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.


Попробуй добавить вызов SetForegroundWindow(HWND)
В случае с MFC сделай так AfxGetMainWnd()->SetForegroundWindow();
По крайней мере оно будет мигать на панели задач ...
... << RSDN@Home 1.1 beta 2 >>
__________________________________________________________ :)
Compiling...
message.cpp(4):error C2059: Can't understand russian mat :'@#$^& '
Re: ShowWindow (SW_SHOW)
От: Cherny  
Дата: 28.12.03 19:14
Оценка:
Я написал простенькую программу на MFC, которая вставляет свою иконку в System tray. По задумке, при щелчке мышью на иконке, окно программы исчезает с экрана с помощью ShowWindow (SW_HIDE); при следующем щелчке окно появляется с помощью ShowWindow (SW_SHOW). Но возникла проблема: при появлении на экране окно не становится активным. Если знаете в чём дело, помогите.

Это снова пишет автор вопроса. Я пробовал использовать функции SetActiveWindow() и BringWindowToTop(), но они тоже не помогают, а хочется, чтобы окно стало поверх других и при этом активным.
Re[2]: ShowWindow (SW_SHOW)
От: st0rm Беларусь  
Дата: 28.12.03 23:41
Оценка:
Здравствуйте, Cherny, Вы писали:

C>Это снова пишет автор вопроса. Я пробовал использовать функции SetActiveWindow() и BringWindowToTop(), но они тоже не помогают, а хочется, чтобы окно стало поверх других и при этом активным.


Топик Offsider'а почитай! SetForegroundWindow(HWND) должно помочь!
Re[3]: ShowWindow (SW_SHOW)
От: Dmitriy Yakovlev Украина www.prof-uis.com
Дата: 29.12.03 15:40
Оценка:
Здравствуйте, st0rm, Вы писали:

S>Здравствуйте, Cherny, Вы писали:


C>>Это снова пишет автор вопроса. Я пробовал использовать функции SetActiveWindow() и BringWindowToTop(), но они тоже не помогают, а хочется, чтобы окно стало поверх других и при этом активным.


S>Топик Offsider'а почитай! SetForegroundWindow(HWND) должно помочь!


Ну чего вы на человека набросились. В некоторый случаях обычный вызов SetForegroundWindow(HWND) действительно не помогает. И никакая функция при этом не поможет — разве что мигать в таскбаре будет, но толку от этого мало. Тут нужно поступить по другому. Все что нужно сделать — это вывести окно в topmost, а затем вернуть ему прежнее состояние.
Допустим в случе вывода окна из трея можно сделать так:

  if( IsIconic() )
    ShowWindow(SW_RESTORE);
  ShowWindow(SW_SHOW);
  SetWindowPos(&wndTopMost, 0, 0, 0, 0,SWP_NOMOVE|SWP_NOSIZE);
  SetWindowPos(&wndNoTopMost, 0, 0, 0, 0,SWP_NOMOVE|SWP_NOSIZE);


после чего окно останется поверх других. На всякий случай можно вызвать SetActiveWindow(), но я думаю это необязательно.
Re: ShowWindow (SW_SHOW)
От: Cherny  
Дата: 29.12.03 17:17
Оценка:
Спасибо за ответы. Я уже попробовал SetForegroundWindow(HWND). Помогло, окно стало активным.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.