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

Вниз

ДОбавить кнопку в кэпшн чюжих окон.   Найти похожие ветки 

 
@!!ex ©   (2007-12-11 17:28) [0]

Нужно добавить кнопку в кэпшн всех окон, и естесественно обрабатывать ее нажатие... как бы это реализовать?


 
Leonid Troyanovsky ©   (2007-12-11 17:38) [1]


> @!!ex ©   (11.12.07 17:28)
 
> Нужно добавить кнопку в кэпшн всех окон,

Добавляй в системное меню, обрабатывай в глоб. хуке.

--
Regards, LVT.


 
@!!ex ©   (2007-12-11 17:40) [2]

> [1] Leonid Troyanovsky ©   (11.12.07 17:38)

Тоесть в кэпшн не реально добавить? Ок...
А где почитать про добавление в глобальное меню?


 
Leonid Troyanovsky ©   (2007-12-11 17:46) [3]


> @!!ex ©   (11.12.07 17:40) [2]

> А где почитать про добавление в глобальное меню?

GetSystemMenu, AppendMenu & etc.
Еще потребуется уникальный идентификатор для WM_SYSCOMMAND.

--
Regards, LVT.


 
@!!ex ©   (2007-12-11 17:50) [4]

> [3] Leonid Troyanovsky ©   (11.12.07 17:46)

ОК! Спасибо!


 
tesseract ©   (2007-12-11 17:55) [5]


> Нужно добавить кнопку в кэпшн всех окон, и естесественно
> обрабатывать ее нажатие... как бы это реализовать?


Можно, делал как-то в 9х добавлял на неклиентскую часть. Но глюков огреб немерянно. Кнопочка свои фынкции не выполняла никак...


 
@!!ex ©   (2007-12-11 18:47) [6]

Нашел такйо код:
{Добавление своих пунктов меню в системное меню окна}
{поместите
const

My_MenuItem=$4000; (*константу можете по своему обозвать и дать ей другой номер, но есть какие-то номера, которые зарезервированы для виндузом для своих пунктов меню - не попадите на них*)
перед
var

Form1: TForm1;
ОБЯЗАТЕЛЬНО ПОМЕСТИТЕ В СЕКЦИЮ PRIVATE СТРОКУ

procedure HookSysCommand(var message : TwmSysCommand);message wm_SysCommand;
}

procedure TForm1.HookSysCommand(var message : TwmSysCommand);
begin

inherited;
case message.CmdType of
My_MenuItem : ShowMessage("Пункт активизирован");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var

SysMenu : THandle;
begin

SysMenu := GetSystemMenu(Handle, False);
AppendMenu(SysMenu, mf_SEPARATOR, 0, #0);
AppendMenu(SysMenu, mf_BYPOSITION, My_MenuItem, "Новый пункт");
{appendmenu добавляет новый пункт в конец,
а для вставки своего пункта в другую порядковую позицию воспользуйтесь insertmenu
пример : InsertMenu(SMenu, 1, mf_BYPOSITION, My_MenuItem, "Новый пункт");}
end;


НЕпойму, как узнать Handle окна, в меню которого кликнули.


 
@!!ex ©   (2007-12-11 18:48) [7]

И можно ли не константой задавать ID менюшки, а получить свободный?


 
Leonid Troyanovsky ©   (2007-12-12 00:51) [8]


> @!!ex ©   (11.12.07 18:48) [7]

> И можно ли не константой задавать ID менюшки, а получить
> свободный?

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

--
Regards, LVT.


 
Германн ©   (2007-12-12 00:59) [9]


> @!!ex ©   (11.12.07 17:28)
>
> Нужно добавить кнопку в кэпшн всех окон, и естесественно
> обрабатывать ее нажатие... как бы это реализовать?
>

Малюсенький оффтоп.
Разберешься со своей проблемой, займись вопросом как добавить своё окно в кэпшн всех окон. Потом мне расскажешь. Очень мне этого хочется, а самому копать лень. :)


 
Leonid Troyanovsky ©   (2007-12-12 01:06) [10]


> @!!ex ©   (11.12.07 18:47) [6]

> НЕпойму, как узнать Handle окна, в меню которого кликнули.

WH_CALLWNDPROC* даcт и хендл окна, получившего WM_SYSCOMMAND.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-12-12 01:09) [11]


> Германн ©   (12.12.07 00:59) [9]

> Разберешься со своей проблемой, займись вопросом как добавить
> своё окно в кэпшн всех окон.

Если лень, то и в свои непросто, чего там уж во все.

--
Regards, LVT.


 
Германн ©   (2007-12-12 01:31) [12]


> Leonid Troyanovsky ©   (12.12.07 01:09) [11]

Эт точно.
Но я не совсем точно выразился. В Кэпшн активного окна.

P.S.
Есть у меня "одна, но пламенная страсть". Была когда-то в WondowBlinds возможность создавать темы с окошком в кэпшенах активных окон. И в в этих окошках я выводил время (часы). Наверно у меня бзик. Хочу постоянно видеть текущее время. А панель задач не люблю. (Ещё один бзик) К тому же она внизу, а я предпочитаю смотреть вверх.


 
Leonid Troyanovsky ©   (2007-12-12 09:16) [13]


> Германн ©   (12.12.07 01:31) [12]

>  А панель задач не люблю. (Ещё один бзик) К тому же она
> внизу, а я предпочитаю смотреть вверх.

Ну, и помести ее наверх :)

Кста, если речь только о времени, то проще, IMHO,
писать его в заголовке окна.

--
Regards, LVT.



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

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

Наверх




Память: 0.5 MB
Время: 0.017 c
2-1197846653
Koss
2007-12-17 02:10
2008.01.13
как создать TImage в режиме run-time


15-1197142644
Cerberus
2007-12-08 22:37
2008.01.13
Посоветуйте рок группу и альбом.


15-1197267417
Slider007
2007-12-10 09:16
2008.01.13
С днем рождения ! 10 декабря 2007 понедельник (день тяжелый)


15-1197262065
class_
2007-12-10 07:47
2008.01.13
Ультиматум Борна


2-1197370362
San1
2007-12-11 13:52
2008.01.13
вывод текста на Canvas