Форум: "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