Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


Минимизация окон


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
psa247
Гость







СообщениеВс, 04-Сен-2005 15:11    Заголовок сообщения: Минимизация окон
Цитата

Подскажите, как грамотно сворачивать чужие окна (аналог "Свернуть все окна")?
Почему этот код при восстановлении предыдущего экземпляра не дает пользоваться кнопкой минимизации окна


Код:
     if IsIconic(index) then OpenIcon(index);
     if IsWindowEnabled(index)= False then EnableWindow(index, True);
     if IsWindowVisible(index)= False then ShowWindow(index, SW_SHOWNORMAL);
     SendMessage(index, SW_RESTORE, SW_SHOWNORMAL, 1); <--- ???
     SetForegroundWindow(index);
В начало
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеПн, 05-Сен-2005 12:56 
Цитата

а что это за сообщение у тебя такое - SW_RESTORE?

обычно для сворачивания окна используют сообщение WM_SYSCOMMAND с параметром SC_MINIMIZE.
т.е. в твоем случае это будет выглядеть так (если конечно переменная index подразумевает собой хэндл окна):
Код:
SendMessage(index, WM_SYSCOMMAND, SC_MINIMIZE, 0);

ну и для восстановления соответственно
Код:
SendMessage(index, WM_SYSCOMMAND, SC_RESTORE, 0);

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
psa247
Гость







СообщениеСр, 07-Сен-2005 10:42 
Цитата

Вот немного переделал:
Код:

 index:= FindWindow(nil,' --- Заголовок ---');
   if index <> 0 then begin
     if IsIconic(index)then begin
       OpenIcon(index);
       ShowWindow(index, SW_RESTORE);
       end;
     if IsWindowEnabled(index)= False then
       EnableWindow(index, True);
     if IsWindowVisible(index)= False then
       ShowWindow(index, SW_SHOWNORMAL);

     SendMessage(index, WM_SYSCOMMAND, SC_RESTORE, 0);
     SetForegroundWindow(index);
     Application.Terminate;
     exit;
     end;
   Application.Initialize;


Оно восстанавливает предыдущий экземпляр, ставит на передний план, но кнопка минимизации окна потом отказывается работать.
В начало
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеПн, 12-Сен-2005 1:25 
Цитата

to psa247 Здесь это уже обсуждалось ранее. Воспользуйся поиском в данном форуме.
_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100