Форум: "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.008 c