
14.07.2010, 23:40
|
 |
Активный
|
|
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
|
|
Цитата:
Сообщение от NumLock
ну если очень хочется, то можно:
Код:
BOOL DrawEdge(
HDC hdc, // handle to device context
LPRECT qrc, // pointer to rectangle coordinates
UINT edge, // type of inner and outer edge to draw
UINT grfFlags // type of border
);
к примеру
|
Код:
...
WM_DRAWITEM:
begin
case PDRAWITEMSTRUCT(lParam).CtlType of
ODT_MENU :
begin
lpdis := Pointer(LParam);
item := Pointer(lpdis.ItemData);
Arrow:=LoadBitmap(0,Pchar(ArrowNum));
h2DC := CreateDC('DISPLAY', nil, nil, nil);
h1DC := CreateCompatibleDC(h2DC);
SetBkMode(h1DC, TRANSPARENT);
SelectObject(h1DC, Arrow);
GetObject(Arrow,SizeOf(GetArrow),@GetArrow);
CheckWidth:=GetArrow.bmWidth;
//Рисуем Рамку меню
drawMenuWnd(lpdis.hDC);
if (lpdis.itemState and ODS_SELECTED = ODS_SELECTED) then begin
//- тут узнаём что рисуется Выделенный пункт меню и отрисовываем его
FillRect(lpdis.hDC,lpdis.rcItem, GetSysColorBrush(COLOR_HIGHLIGHT); //к примеру
DrawIconEx(бла,бла,бла); // Рисуем иконку, текс и прочие шалости веделенного пункта меню в lpdis.rcItem - Rect этого пункта меню.
...
end Else begin
//Тут узнаем о не выделенных пунктах меню ну и отрисовывем их как хотим. lpdis.rcItem - Rect'ы этИХ менюх
...
end;
//Это всё опозналось, прекрасно, пробуем опознать сепаратор.
mii.cbSize := sizeof(mii); //Структура Информации о Пункте меню
mii.fMask:=MIIM_STATE or MIIM_TYPE or MIIM_ID or MIIM_DATA or MIIM_SUBMENU;
mii.cbSize:=sizeof(MENUITEMINFO);
GetMenuItemInfo(PopupMenu1, lpdis.itemID, true, &mii); //Получаем информацию о текущем пункте меню (lpdis.itemID)
if (mii.fType = MFT_SEPARATOR) then begin //Смотрим - сепаратор или нет, если да то отрисовываем его.
FillRect(lpdis.hDC,lpdis.rcItem, GetSysColorBrush(COLOR_WINDOWTEXT));
end;
end;
...
Как рисовать это понятно, но мне не понятно другое
Вот вродебы должно отрисовать, но нет,.. if mii.fType = MFT_SEPARATOR - не даёт координаты сепаратора на менюхе lpdis.rcItem - остаётся темеже что и на выделенном меню...
Вот мне и надо узнать что рисуется Сепаратор, и получить его TRECT...
__________________
Програмистами не рождаются, ими становятся!
|