![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
GoldFinch, внимательно перечитай:
и скажи: 1. будет ли включен флаг b, если выполняется условие !a && b 2. будет ли включен флаг b, если выполняется условие !(a || b) все просто до безобразия: b - это кнопка сворачивания, а - это кнопка закрытия скрывая панель, ты тем самым скрываешь все кнопки, включая b, которой люди пользуются, WS_SYSMENU работает аналогично, зачем мутить воду-то, непонимаю -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
Модератор: Сообщение скрыто. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
GoldFinch, на будущее: еще хоть раз увижу подобные наезды на участников, будешь потешаться в одиночестве, и за пределами форума
опять же повторюсь, я не придираюсь к твоим советам, я просто предвосхищаю заблуждения участников, в которые ты их вводишь осознанно, и все надеюсь, что когда-нибудь совесть в тебе проснется и ты перестанешь давать советы мимо темы "иногда лучше молчать..."© -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 1 Всего: 32 |
Вот полное решение ИМХО.
Добавлено через 4 минуты и 25 секунд Хотя, хз как будет работать между процессами Это сообщение отредактировал(а) Cheloveck - 17.8.2009, 17:20 -------------------- ![]() |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
эт точно, субклассинг логичен, но для чужого процесса не подойдет -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
никак не будет.
tusha, во-первых сообщения могут доставляться окну не только через очередь сообщений, но и посредством прямого или опосредованного вызова оконной процедуры - хук WH_GETMESSAGE соответственно в этом случае не срабатывает. такая доставка перехватывается хуками WH_CALLWNDPROC/WH_CALLWNDPROCRET, но изменять сообщение в этих хуках нельзя. во-вторых, и это основное - в своем обработчике хука ты не делаешь ничего для отмены сообщения. должно быть как-то так:
|
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 1 Всего: 32 |
да, проверил, моя не работать((
-------------------- ![]() |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Может, попробовать просто задизэблить крестик?
Хоть речь о меню, но вроде бы та же команда активирует и крестик. Вроде нет ту ничего такого, что между процессами работать не будет... Разве что если целевое приложение само постоянно активирует системные команды в холостом цикле. -------------------- ... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
да, Earnest, как раз то что tusha и требовалось:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
прикольно, спасибо за совет. однако хотелось бы чтоб визуально окно оставалось без измененийй , в данном случае у него дизеблится крестик. про WM_NULL додул раньше, однако как сказал тов. dumb для данного фильтра (WH_CALLWNDPROC) это отказывалось работать. будем пробовать дальше, если ниче не выйдет, то придется дизейблить крестик ))) |
|||
|
||||
| tusha |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
вобщем наткнулся на такой бок(?)
(из предыдущих моих тем) запускаю следующий код:
ситуация следующая: первый раз, когда блокнот висит на экране и запускается приложение - крестик стает сереньким - все как надо. на кнопку с кодом
реагурует отлично -------------------------------------------------- потом закрываем программу (блокнот остается с ЗАБЛОКИРОВАННЫМ крестиком) и запускаем ее снова - пробуем разблокировать крестик - ничего не получается.... в ситуации когда прогу закрываю, но крестик окна блокнота MF_ENABLED - все работает отлично ктонибудь сталкивался с таким? есть идеи? Добавлено через 4 минуты и 43 секунды еще одно маленькое уточнение - хендл окна я получаю, но рядом со значением в скобках стоит unused ???? |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
перед закрытием своей программы, просто вывзови:
тогда и восстанавливать состояние кнопки не потребуется конечно, WinHandle должен храниться на протяжении всей работы твоей программы параметр TRUE означает, что копия системного меню, которую ты создал будет уничтожена, а на его место будет установлено меню по-умолчанию пока ты этого не сделаешь, системное меню невозможно будет скопировать, т.е. ты как бы закрываешь дверь, на свой секретный код, и каждый раз этот код уникален, но не открываешь ее вновь после работы своей программы, чтобы ее можно было закрыть повторно это видимо просто механизм защиты от утечек ресурсов, который позволяет копировать меню только с оригинала Добавлено через 6 минут и 52 секунды да, кстати, не нужно вызывать GetSystemMenu всякий раз, когда тебе требуется дескриптор меню, у тебя должно быть только 2 вызова этой функции: в начале работы с меню и в конце, перед закрытием твоей программы -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
гениально)
поставил бы +1 но кол-во постов пока не позволяет.))) и главное что в описании EnableMenuItem нету хотя бы упоминания про этот прикол) иль я не внимательно смотрел) ЗЫ: век живи век учись у дураком помрешь |
|||
|
||||
| GremlinProg |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
в EnableMenuItem упоминаний и не должно быть, в GetSystemMenu должно быть, но оно несколько смазано, в поддержке есть, только немного на другом примере: http://support.microsoft.com/kb/300688
Добавлено через 12 минут и 13 секунд хотя я поспешил, о защите тут не говорится, просто пишут, что мол при закрытии управляющего приложения, сис. меню не будет восстановлено, что может поставить пользователя в ступор: "как же его закрыть" -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
| tusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 17.7.2008 Репутация: нет Всего: 1 |
http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |