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

Вниз

Как определить экранные координаты 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.01 c
4-37430
Ваня Пупкин
2002-11-24 12:59
2003.01.13
Мастакам COM в Delphi


14-37350
gsu
2002-12-23 16:39
2003.01.13
А я на счетах работать умею, слабо ?


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


1-37129
id_privin
2003-01-04 14:22
2003.01.13
Можно ли привести интерфейс к классу


1-37206
Ramzes
2002-12-31 05:50
2003.01.13
SelfExtractor





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