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

Вниз

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

 
@!!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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
2-1197361364
Soulless
2007-12-11 11:22
2008.01.13
Изменение фона в Qreport


15-1196713425
Rouse_
2007-12-03 23:23
2008.01.13
Выдвигаем кандидатов на знак "Мастер Дельфи"


2-1197447814
Footballer
2007-12-12 11:23
2008.01.13
Обмен информацией между .exe


2-1197511676
Wind
2007-12-13 05:07
2008.01.13
TTreeView


2-1197880874
olegusis
2007-12-17 11:41
2008.01.13
Построение графика функции.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский