Текущий архив: 2006.01.01;
Скачать: CL | DM;
Вниз
Раскрытие PopupMenu на форме Найти похожие ветки
← →
Дмитрий_05 (2005-12-03 21:22) [0]У меня форма нестандартного размера(непрямоугольная) без бордюра, создается функциями CreateRectRgn, SetWindowRgn в OnCreate. Прорисовка формы осуществляется в обработке WM_EraseBkgnd а перенос в обработке WMNCHitTest. Так вот в такой форме у меня почему-то не раскрывается PopupMenu по нажатию по ней правой кнопкой мыши, в свойстве формы "PopupMenu" выставлено. Попробовал сделать так: обрабатывать WM_RBUTTONDOWN а в нем прописал:
procedure TForm1.WMRButtonDown(var Message: TWMRBUTTONDOWN);
begin
PopupMenu1.Popup(Message.XPos, Message.YPos);
end;
тоже результата не дало... Что делать?
← →
Delphi_is_cool © (2005-12-03 23:59) [1]
> тоже результата не дало
Т.е сообщение отлавливается, но PopupMenu не раскрывается ? Если да, то попробуй использовать ф-цию TrackPopupMenu ... хотя я думаю что есть вероятность того что оно раскрывается, но за пределами экрана, в этом случаем можно попробовать использовать ф-цию GetMessagePos для опредиления координат ...
← →
Дмитрий_05 (2005-12-04 01:13) [2]мне кажется что сообщение не доходит до клиентской части... это из за того что WMNCHitTest я обрабатываю так:
if msg.Result=htClient then msg.Result:=htCaption;
можно ли его какнибудь переделать чтобы доходили сообщения?
← →
Юрий Зотов © (2005-12-04 01:46) [3]> Дмитрий_05 (04.12.05 01:13) [2]
> мне кажется что сообщение не доходит до клиентской части... это из за
> того что WMNCHitTest я обрабатываю так
Именно поэтому.
> можно ли его какнибудь переделать чтобы доходили сообщения?
Дополнительно проверяйте, нажата ли левая кнопка мыши:
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
if (GetAsyncKeyState(VK_LBUTTON) < 0) and (Message.Result = HTCLIENT) then
Message.Result := HTCAPTION
end;
← →
Дмитрий_05 (2005-12-04 21:53) [4]Спасибо, все работает )))
Страницы: 1 вся ветка
Текущий архив: 2006.01.01;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.024 c