-
Как добавить пункт в системное меню windows, но не в обычное меню вызываемое alt+space а меню editов и memo, в котором пункты вырезать вставить копировать?
-
> mistic (01.08.08 10:19)
> Как добавить пункт в системное меню windows
Не надо туда ничего добавлять.
С помощью TActionList подобным меню можно снабдить нужные контролы за пару минут, не написав ни строки кода.
-- Regards, LVT.
-
я имею в виду, не в свое приложение, а в общее конктекстное меню всех приложений windows появляющихся в editax.
-
возможно как то нужно модифицировать команду AppendMenu (GetSystemMenu (Form1.Handle, False), MF_SEPARATOR, 0, '');
-
> mistic (01.08.08 10:39) [2]
Считай, что это нереально.
-- Regards, LVT.
-
Думаю в дельфи все реально, возможно нужно задействовать сом обьекты... или вместо GetSystemMenu может есть какой нибудь getsystempopupmenu... выход должен быть...
-
> mistic (01.08.08 11:41) [5]
> выход должен быть...
Ну-ну.
Ничего в этой жизни не бывает просто так, и даже овцы - в тулупах.
-- Regards, LVT.
-
у меня за пунктами вырезать вставить копировать удалить и выделить все, идут пункты "порядок чтения:спраава налево", "показать управляющие символы юникода". если какая то программа может вставить туда свои пункты, то и мы можем, я так думаю!
-
> mistic (01.08.2008 13:12:07) [7]
> мы можем
Ты это про кого.
-
> меню всех приложений windows
Интересно, и что же все приложения windows обязаны будут сделать при клике юзера на невесть откуда появившемся у ихних Edit-контроов пункте конт.меню "показать управляющие символы юникода" ?
-
> Интересно, и что же все приложения windows обязаны будут > сделать при клике юзера на невесть откуда появившемся у > ихних Edit-контроов пункте конт.меню "показать управляющие > символы юникода" ?
вставить определенный текст. будет несколько пунктов, на одном я бы не заморачивался.
-
> Ты это про кого.
про дельфийстов
-
> mistic (01.08.2008 14:57:10) [10]
В русском языке Вставить и Показать - это разные слова с разным смыслом.
-
> будет несколько пунктов, на одном я бы не заморачивался.
Разница между несколькими и один чисто экстенсивная.
-
> вставить определенный текст
Откуда, к примеру, приложение Notepad узнает, что при клике на это меню нужно что-то куда-то "вставить" ?)
-
> Сергей М. (01.08.2008 16:52:14) [14]
Вставка делается через посылку сообщений, а Notepad работает через сообщения. В Notepad стандартный MEMO компонент Виндоус.
-
> Anatoly Podgoretsky © (01.08.08 16:57) [15]
Причем здесь это ?)
Я про реакцию контрола на клик невесть откуда взявшегося пункта меню)
-
> Сергей М. (01.08.2008 17:08:16) [16]
Как думаешь, каким образом реагирует Дельфи на чужое, внешнее меню, для TEdit
Ответ на вопрос, который немного старее Дельфи - встроить туда свои пункты нельзя, поскольку данное меню HardCoded - единственный путь это написать свое, но это не решает проблемы встраивания в другие приложения. Для расширений файлов это решаемая задача, для компонент Виндоус решение неизвестно.
-
> Anatoly Podgoretsky © (01.08.08 20:01) [17]
> каким образом реагирует Дельфи на чужое, внешнее меню
Никаким.
Толя, ты вообще мне что доказать хочешь ? Очевидное ?)
Очевидно ведь одно - чужое приложение знать не знает ни про какие чудеса в некоем контекстном меню некоего своего контрола, хоть стандартного виндового хоть любого другого.
-
> Сергей М. (01.08.2008 20:52:18) [18]
Я доказать не хочу, я прямо говорю забудь дорогу всяк сюда попавший.
-
Я бы не хотел, чтобы в мои приложения что-то так нагло вставилось. Так что, если найдет решение, сообщите мне, пожалуйста, че я должен дописать в свои программульки, чтобы это решение у меня не сработало. Очень уж я придирчив к интерфейсу.
-
значит невозможно. чтож будем идти обходным путем, писать свой popup и посылать команду вставки активному контролу.
-
-
Дело в том, что есть стандартные контролы, поведение которых прописано в Comctrl32.dll. Вот это есть стандартное меню Виндовс для контрола Edit. Программы могут переопределять поведение контролов по своему усмотрению (у себя, конечно).
-
> Как добавить пункт в системное меню windows
Это невозможно. За стандартное меню на edit-контролах отвечает система. Никакими средствами получить хэндл этого меню для модификации нельзя. Стандартное меню не ловится хуками, для него не рассылаются стандартные сообщения (типа WM_INITMENUPOPUP) и т.п. Возможно, это сделано специально, чтобы программисты не мутили с этим (как известно - дай только людям в руки возможность - и они обязательно воспользуются ей неправильно). Единственный метод - установить полностью своё меню с эмулированными стандартными пунктами. Проблема в том, что нужно, во-первых, делать пункты локализованными, а во-вторых, учитывать наличие дополнительных unicode-меню (и прочих дополнительных пунктов, если они есть). > Кстати, как тогда это возможно? http://img.muffs.ru/imgstore/D605q895T_1217829135_w638410
Что не так с этим меню? Это - системное меню и система распоряжается им по своему усмотрению. Очевидно, что она может добавить сколько угодно пунктов. В частности, при установке поддержки письма слева-направо и т.п. она добавляет туда эти пункты. Это ни разу не означает, что вы можете менять это меню.
|