Автор
|
Тема: Ненормальная минимизация
|
Del |
опубликован 11-01-2002 09:42 MSK
Написал я прогу которая разпахивает свою форму на весь экран (C++Builder5) и бордера не имеет. В FormClose запретил ей закрываться если не был введён пароль... Но! если кликнуть [Win]+D прога минимизируеться - как это вообше возможно, я ж ей бордер отрубил!! Прога - форма с кнопками запуска игр (для игровухи).
|
ADK
|
опубликован 11-01-2002 10:16 MSK
Она не минимизируется, если бы нажал Win+M, ничего бы не было. Просто по Win+D система выносит рабочий стол поверх всех окон. |
SUnteXx
|
опубликован 11-01-2002 11:25 MSK
2ADK: Позволь с тобой не согласиться! Пасиба:) Я в проге делаю, чтобы при минимизации окно исчезало и показовалось в СисТрее! Так вот, при нажатии Вынь+D прога видна только в систрее! Мараль сей басни такова, что кучка зайцев пиз.. ой, сори, что что-то там у них неладное творится!) |
ADK
|
опубликован 11-01-2002 11:52 MSK
Про трей не въехал. Он тут не при чём. |
Del
|
опубликован 11-01-2002 19:29 MSK
Минимизируется ещё и как! Аккуратненько так сворачиваеться в taskbar. |
SUnteXx
|
опубликован 12-01-2002 12:14 MSK
2Del: Я про то же! |
SUnteXx
|
опубликован 12-01-2002 12:53 MSK
2ADK: Про трей я к тому, что в трей прога помещается, когда идет мессага WM_SIZE с параметром wParam == SIZE_MINIMIZED! Так что проги минимизируются, но сама минимизация не показывается (т.е. не показывается плавное минимизирование окна!). Вот я к чему:) |
Del
|
опубликован 14-01-2002 10:40 MSK
Так всё-таки у кого-нибудб есть какие-нибудь конструктивные (или деструктивные) но мысли! по поводу [Win]+D ? Сколько уже в этом форуме сижу - большаяя часть народа знает намного больше меня, неужели никто не знает что это за фигня? |
stan
|
опубликован 14-01-2002 13:18 MSK
Насколько я понимаю, Виндам пофиг, что ты запретил сворачивать окошко. В W2K сворачиваются все (или почти все окна), даже если они висят или не хотят сворачиваться. Там даже параметр у функции ShowWindow есть, SW_FORCEMINIMIZE называется. По ходу дела, окошко в этом случае не сворачивается, только если оно Always on top. |
SUnteXx
|
опубликован 14-01-2002 17:28 MSK
2stan: Небольшое добавление. Если окно TOPMOST и оно показывается в таскбаре, то оно все равно свернеться! Не свернется только то окно, которое TOPMOST и которое не видно в таскбаре:( |
Del
|
опубликован 14-01-2002 18:57 MSK
Просветите плз - чё такое TOPMOST и как сделать чтоб окна не было видно в таскбаре (юзаю registerserviceprocess, но в таскбаре прога есть). |
SUnteXx
|
опубликован 15-01-2002 12:57 MSK
TOPMOST - всегда сверху. Попробуй вначале вызвать эту ф-цию:SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); А потом посмотри эту: SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); Сам все поймешь!) А для таскбара делай следующее (я так делаю, по-другому не знаю как): 1) Создай родителя со стилем WS_EX_TOOLWINDOW 2) Скрой родителя. ShowWindow(hWndParent, SW_HIDE); 3) Создай главное окно и поставь ему этого "скрытого" родителя и все будет в шоколаде:) |
Del
|
опубликован 16-01-2002 14:40 MSK
>> 1) Создай родителя со стилем WS_EX_TOOLWINDOWНе врубаюсь... Я вообше на Билдере пишу... Объясни поподробнее плз. |
michl_m
|
опубликован 16-01-2002 15:18 MSK
2SUnteXx: Со скрытым родителем ты прикольно придумал. Хороший трюк, спасибо. Воспользуюсь. |
SUnteXx
|
опубликован 17-01-2002 02:21 MSK
2Del: WS_EX_TOOLWINDOW - стиль окна, которое не показывается в Taskbar'e.Еще есть вопросы? Можешь задавать на SUnteXx@pisem.net |
SUnteXx
|
опубликован 17-01-2002 12:26 MSK
Попутно вопрос, как можно определить номер кнопки моего окна в TaskBar'e? Пробовал по тексту окна, текста не дает, пробовал по тексту тултипа - них не получилось. Может у кого идеи есть?Просто тогда станет легко убирать окно из таскбара: SendMessage(hWndTaskBar, TB_HIDEBUTTON, ButtonID, bShowInTaskBar); Пробовал - работает, осталось определить номер батона! |
Del
|
опубликован 20-01-2002 15:51 MSK
2SUnteXx :: //**** 1) Создай родителя со стилем WS_EX_TOOLWINDOW2) Скрой родителя. ShowWindow(hWndParent, SW_HIDE); 3) Создай главное окно и поставь ему этого "скрытого" родителя и все будет в шоколаде:) ****// Как это сделать?! Объясни пожалуйста, если не влом напиши кусок кода... |
SUnteXx
|
опубликован 21-01-2002 12:39 MSK
Если на MVC++ на АПИ, то завтра кину, время щаззз нету. Кину на мыло или сюда:( Если на чем-то другом, то это не ко мне:) |
Del
|
опубликован 21-01-2002 12:31 MSK
Нет, на BC++Builder. Если кто-то знает как - напишите пожалуста!!! |
SUnteXx
|
опубликован 21-01-2002 14:46 MSK
:( |
Del
|
опубликован 22-01-2002 16:58 MSK
Так всё таки неужели никто не знает как это под Билдером сделать? |
frostbitten
|
опубликован 25-01-2002 05:48 MSK
А под билдером. Кроме формы есть еще одно окно. Вот для формы ты запретил, а в таскбаре торчит-то не оно, а др... Это старая история кот. я не помню уже... Но именно благодаря этому ты можешь свернуть форму, а можешь приожение - в VC это синонимы, а вот в билде нет.Там можно как-то было получить хандл. этого скрытого (с глаз, а не HIDE) окна и с ним уже поиграть... половить WM_SYSCOMMAND например. А TOPMOST это Form1->FormStyle(fsStayOnTop /* но на счет канстанты не уверен*/)... |
One
|
опубликован 25-01-2002 13:03 MSK
2frostbitten: Не мути воду. В билдере все окна (формы) создаются дочерними для Application, его дискрептор Application->Handle, и не надо ни каких заморочек. |