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

Вниз

Как получить Handle системного Popup меню?   Найти похожие ветки 

 
Cosinus ©   (2004-10-06 14:06) [0]

А именно того, который выскакивает при нажатии на правую кнопку, если указатель мыши находится например над TEdit(вырезать, копировать и т.д.)?


 
Cosinus ©   (2004-10-06 14:18) [1]

Сорри за глупый вопрос, GetSystemMenu висело перед глазами, а GetMenu между глаз попало :))


 
Cosinus ©   (2004-10-06 14:43) [2]

Хм... Не прокатывает почему то...
У меня вот такая конструкция
procedure TForm1.ChangePopupMenu;
begin
 AppendMenu(GetMenu(MyEdit.Handle), MF_SEPARATOR, 0, "");
 AppendMenu(GetMenu(MyEdit.Handle), MF_STRING, SC_MyMenuItem, "MyItem");
end;

Подозреваю, что вот из-за этого If the window is a child window, the return value is undefined. Но не уверен.
Облазил почти все функции в Menu Functions. The following functions are used with menus., но так ничего и не нашел.


 
Семен Сорокин ©   (2004-10-06 15:06) [3]

а если попытаться поймать WM_INITMENUPOPUP в оконной процедуре?


 
Cosinus ©   (2004-10-06 16:15) [4]

Пробую так...
procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;  

procedure TForm1.WMInitMenuPopup(var Msg: TWMInitMenuPopup);
begin
 inherited;
 AppendMenu(Msg.MenuPopup, MF_STRING,SC_MyMenuItem, "MyItem");
end;

Почему то вообще не отрабатывет процедуру, не попадает в нее...


 
Семен Сорокин ©   (2004-10-06 16:30) [5]

а если перекрыть WndProc именно Edit"а, а не формы?


 
Amoeba ©   (2004-10-06 16:45) [6]

А если не возиться с системным, а просто сесть и написать заменяющее его собственное? Естественно, придется повозиться с Copy, Paste и прочим.


 
Cosinus ©   (2004-10-06 17:06) [7]


> Amoeba ©   (06.10.04 16:45) [6]

Это конечно выход, в итоге то видимо так и сделаю, но... Интересно :))

> Семен Сорокин ©   (06.10.04 16:30) [5]

А это без разницы, что на Форме не срабатывает, что на Эдите.
Я, кстати, прошу прощения за неправильный код, который я написал, просто пока экспериментировал много мусора осталось, вот и перепутал. А на самом деле у меня не срабатывает следующий код
 procedure WMInitMenuPopup(var Msg: TWMInitMenuPopup);message WM_INITMENUPOPUP;

procedure TForm1.WMInitMenuPopup(var Msg: TWMInitMenuPopup);
begin
    inherited;
    AppendMenu(Msg.MenuPopup, MF_STRING,SC_MyMenuItem, "MyItem");
end;


 
DVM ©   (2004-10-06 20:55) [8]


> Cosinus ©   (06.10.04 17:06) [7]

Если это сообщение и посылается, то приходит оно не форме, а полю редактирования Edit и ловить его надо в его оконной процедуре.



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1097488798
Mutilator
2004-10-11 13:59
2004.10.24
Как убить скроллбары у родительской формы fsMDIForm?


8-1091010710
СтёпКин
2004-07-28 14:31
2004.10.24
Запись в JPG при видеозахвате


14-1096614521
Жук
2004-10-01 11:08
2004.10.24
А.Н.Толстой "Пётр Первый"


10-1051092870
sniknik
2003-04-23 14:14
2004.10.24
Какого клиента коннект? Midas.


3-1096013574
Aser
2004-09-24 12:12
2004.10.24
Получение конкретного поля из запроса