Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1147240632
D@Nger
2006-05-10 09:57
2006.05.28
RxLib


15-1146420362
Meson_
2006-04-30 22:06
2006.05.28
Вопрос по железу. Принтер HP 2610: ошибка при включении


5-1131449740
Илья Бобров
2005-11-08 14:35
2006.05.28
Дополнительные строки


1-1145553236
viktorsen
2006-04-20 21:13
2006.05.28
Написание собственного инсталлятора


6-1138795143
Phoenix9000
2006-02-01 14:59
2006.05.28
Удаление и копирование файлов на сетевой ресурс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский