Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

Блокировать сворачивание окна   Найти похожие ветки 

 
antonn ©   (2006-03-01 09:28) [0]

как можно предотвратить сворачивание окна от ярлыка "Рабочий стол"? (Свернуть все окна, тип файла Windows Explorer Command, по-умолчанию находится на панели быстрого запуска)
окно без рамки(бордюра), хотя в общем то без разницы. Не сворачиваются только "on-top" окна, а мне нужно "несвернуть" обычное.
делал так (грубо, наверное, но ничего умнее не придумал...):

procedure TForm1.WndProc (var message: TMessage);
begin
 case message.Msg of
  WM_SHOWWINDOW: begin
   case message.WParam of
     0: exit;
   end;
  end;
 end;
  inherited;
end;


против Win+M помогает, а от той бадяги из первой строки - нет :(
может я не то сообщение перехватываю?
и вообще, такое чувство, что это окна не сворачиваются, а становятся visible:=false;


 
Crash Coredump ©   (2006-03-01 12:42) [1]


> как можно предотвратить сворачивание окна от ярлыка "Рабочий
> стол"?


Зачем насиловать пользователя ?


 
antonn ©   (2006-03-01 13:05) [2]

Crash Coredump ©   (01.03.06 12:42) [1]
Зачем насиловать пользователя ?

я так понимаю, Вы имеете представление о той программе, в которой мне нужна подобная функциональность? или это "служебная фраза" во славу "правильного построения интерфейса"?


 
umbra ©   (2006-03-01 13:21) [3]


> и вообще, такое чувство, что это окна не сворачиваются,
> а становятся visible:=false;

у них меняется z-ордер. Похоже, для всех окон по очереди вызывается функция SetWindwPos и, значит, сделать ничего нельзя


 
antonn ©   (2006-03-01 14:52) [4]

umbra ©   (01.03.06 13:21) [3]
konfabulator (программка, реализующая виджеты) как то может...


 
umbra ©   (2006-03-01 15:06) [5]

да, как оказалось, в принципе это возможно. Посмотрите в СДК информацию о функциях BeginDeferWindowPos, DeferWindowPos, EndDeferWindowPos


 
antonn ©   (2006-03-01 16:19) [6]

мда, без примера совсем не понятно... :(
не понятно, где ее вызывать.
да и использовал так:
EndDeferWindowPos(DeferWindowPos(0,handle,
        HWND_TOPMOST,0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE));

не понять, правильно или нет...

ЗЫ пытался на application.HookMainWindow прицепиться, тоже никак...


 
Crash Coredump ©   (2006-03-01 18:39) [7]

antonn ©   (01.03.06 13:05) [2]


> я так понимаю, Вы имеете представление о той программе,
> в которой мне нужна подобная функциональность?


Даже не собираюсь иметь. Такой программе место в корзине.


 
antonn ©   (2006-03-01 18:53) [8]

Crash Coredump ©   (01.03.06 18:39) [7]
все с вами ясно...


 
Crash Coredump ©   (2006-03-01 19:11) [9]

antonn ©   (01.03.06 18:53) [8]

Не надо желать странного, лучше заняться полезной функциональностью. Программа, нарушающая привычное поведение интерфейса, заслуживает только одно почетное место - в корзине.


 
antonn ©   (2006-03-01 19:20) [10]

Crash Coredump ©   (01.03.06 19:11) [9]
Программа, нарушающая привычное поведение интерфейса, заслуживает только одно почетное место - в корзине.

а я еще раз спрошу - вы имеете представление о той программе, о ее интерфейсе? Уже сделана тьма тьмущая всяких часов/окон статуса/заметок и подобного софта, где окошко размером 200*50 пикселей должно постоянно находиться минимум на рабочем столе. И ничего, пользователи пользуют подобный софт, и не ворчат на "непривычное поведение интерфейса", томому как для подобного софта - несворачиваемось при "Свернуть все окна" как раз и является привычным и удобным. мне нужно такой функционал прикрутить к этой программе: http://deskclock.narod.ru/DS_main.htm (не сочтите за рекламу)


 
Игорь Шевченко ©   (2006-03-01 19:26) [11]

Есть же операция, обратная "показать рабочий стол".

Вкратце, при этой операции окно рабочего стола помещается поверх всех в системе, никаких сворачиваний не происходит.


 
antonn ©   (2006-03-01 19:32) [12]

Игорь Шевченко ©   (01.03.06 19:26) [11]
Есть же операция, обратная "показать рабочий стол".

жаль, что юзеры не все об этом знают...


> Вкратце, при этой операции окно рабочего стола
> помещается поверх всех в системе, никаких сворачиваний
> не происходит.

ну да, это я понял уже. Но перемещения то есть (доходят WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED), можно ли выставить окно перед окном desttop"а? по аналогии с hwndInsertAfter, только не после, а перед. Стиль "onTop" применять нельзя, отсюда и проблема.


 
Игорь Шевченко ©   (2006-03-01 19:39) [13]

antonn ©   (01.03.06 19:32) [12]

А ты проконсультируйся с авторами программ, перечисленных в [10] - вдруг скажут.


 
GrayFace ©   (2006-03-03 10:54) [14]

А если поместить окно на десктоп? Т.е. внутрь окна "Progam Maneger".


 
NightLord ©   (2006-03-03 15:56) [15]


> [14] GrayFace ©   (03.03.06 10:54)

А каким образом? меня эт вопрос тоже интересует.


 
GrayFace ©   (2006-03-04 15:15) [16]

Вот:
var w:hwnd;
  w:=FindWindow("Progman","Program Manager");
  if w=0 then exit;
  windows.SetParent(Handle, w);


> Игорь Шевченко ©   (01.03.06 19:26) [11]
> Есть же операция, обратная "показать рабочий стол".
>
> Вкратце, при этой операции окно рабочего стола помещается
> поверх всех в системе, никаких сворачиваний не происходит.

Нет. На моем старом компьютере хорошо видно, что сворачивание окон происходит.


 
antonn ©   (2006-03-06 09:17) [17]

а при падении explorer"а окна уничтожаются, или живы еще? т.е. их хендлы меняются, как до них добраться можно? утечка получается, как из можно сделать free?


 
antonn ©   (2006-03-06 09:32) [18]

т.е. как узнать, существует ли форма с определенным хендлом?


 
begin...end ©   (2006-03-06 09:38) [19]

> как узнать, существует ли форма с определенным хендлом?

IsWindow


 
antonn ©   (2006-03-06 12:02) [20]


> IsWindow

:)))
прошу прощения за неснятый ручник:)



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.049 c
10-1119940455
Scorpio
2005-06-28 10:34
2006.05.28
Сохранение и закрытие Excel


4-1141928957
Tristania
2006-03-09 21:29
2006.05.28
Добавление пункта меню


15-1146508771
Константинов
2006-05-01 22:39
2006.05.28
Проблема с клавиатурой.


1-1145630809
Sam Stone
2006-04-21 18:46
2006.05.28
Задача оптимального раскроя


15-1146495098
Хинт
2006-05-01 18:51
2006.05.28
Выделение контура