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

Вниз

Как определить экранные координаты Menu?   Найти похожие ветки 

 
GROL ©   (2002-11-25 12:23) [0]

Обрабатываю сообщение wm_drawitem для меню.

Var
DIS: PDrawItemStruct;
R:tRect;
Pmbi: TMenuBarInfo;
Begin
...
WM_DRAWITEM:
begin
DIS := Pointer( Msg.lParam );
R := DIS.rcItem;
...
End;

Полученные координаты прямоугольника R в локальных координатах меню, а мне нужно в координатах экрана.
Пробовал получить координаты меню, но так как я делаю, там нули

pmbi.cbSize := SizeOf(pmbi);
GetMenuBarInfo(DIS.hwndItem, OBJID_MENU, 0, pmbi);


Как их правильно перевести?


 
Игорь Шевченко ©   (2002-11-25 12:36) [1]

А глупый вопрос - зачем надо экранные ?


 
GROL ©   (2002-11-25 12:45) [2]

Капчить все меню, включая бортики


 
Игорь Шевченко ©   (2002-11-25 12:55) [3]

Капчить все меню, включая бортики

Не получится. Device Context не даст.


 
GROL ©   (2002-11-25 13:02) [4]

здрасти...
если капчить GetDC(0) то все подряд.
Вот мне и нужно координаты из локальных перевести в экранные


 
MBo ©   (2002-11-25 13:07) [5]

>если капчить GetDC(0) то все подряд.
Заблуждаешься - GetDC - это клиентская область,
а целиком - GetWindowDC


 
Игорь Шевченко ©   (2002-11-25 13:08) [6]

если капчить GetDC(0) то все подряд.

Это тебе, мягко говоря, кажется...GetDC(0) - это Device Context Desktop"а, к меню не имеющий никакого отношения...


 
MBo ©   (2002-11-25 13:17) [7]

>Игорь Шевченко
нуля я сразу не приметил - видимо, он со снимка экрана хочет вырезать кусок, содержащий меню


 
MrAngel ©   (2002-11-25 13:17) [8]

Рисовать бортики получается но только иногда когда не настроены какиенибудь фишки в виндовсе, ну например "анимированное меню" когда оно как ьы выезжает из другого...


 
Игорь Шевченко ©   (2002-11-25 14:18) [9]

MBo © (25.11.02 13:17)

Нет, он хочет рисовать свое меню, используя GetDC(0) (Насколько я понял...)


 
charge   (2002-11-25 18:20) [10]

MapWindowPoints(DIS.hwndItem, HWND_DESKTOP, R, 2)
или ClientToScreen два раза


 
Eugen Honeker   (2002-11-25 20:32) [11]



rcMenu: TRECT;
hwndMenu: HWND;
...

WM_DRAWITEM:
begin
with PDRAWITEMSTRUCT(lParam)^ do
begin

hwndMenu:= WindowFromDC(hDC);
GetWindowRect(hwndMenu, rcMenu);
...
end;
end;


 
valler   (2002-11-25 22:29) [12]

Гдето в дебрях MSDN было такое слово:

ClientToScreen

The ClientToScreen function converts the client-area coordinates of a specified point to screen coordinates.

BOOL ClientToScreen(
HWND hWnd, // handle to window
LPPOINT lpPoint // screen coordinates
);




 
Игорь Шевченко ©   (2002-11-26 09:38) [13]

Эт все хорошо(ClientToScreen, MapWindowPoint), но где у меню окно (hWnd) ?


> координаты прямоугольника R в локальных координатах меню

Или все-таки в локальных координатах окна, к которому меню относится ?

Из TFM"а:

When drawing menu items, the owner window must not draw outside the boundaries of the rectangle defined by the rcItem member.

Так что странного все-таки желать не стоит.



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
3-36938
race1
2002-12-18 07:49
2003.01.13
sql round


14-37314
Ketmar
2002-12-19 19:01
2003.01.13
---|Ветка была без названия|---


4-37481
Сан Саныч
2002-11-09 09:30
2003.01.13
Виртуальный файл для чтения


1-37210
delfer.ru
2002-12-31 05:20
2003.01.13
У меня вопрос?????????????????


4-37469
Suntechnic
2002-11-27 01:48
2003.01.13
Есть ли в Dephi аналог следующей конструкции из VC++?