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

Вниз

Красивое меню (наверное)   Найти похожие ветки 

 
parovoZZ ©   (2006-05-28 23:45) [0]

Вот у себя на компе нашёл кусок какой-то ерунды:


Function DrawMenuItem (PDrwItStruct: PDrawItemStruct; PaintStruct: TPAINTSTRUCT;
                       HDrawBitmap, HDrawBitmapH: HBITMAP; TextToDraw: string):bool;
var
Tdc: hdc;
TempBMP:HBITMAP;
TextRect : TRect;
{brush:hbrush;}
PixRef:TcolorRef;
x,y:word;

Begin
tdc:=CreateCompatibleDC (PaintStruct.hdc);
SelectObject (tdc, HDrawBitmap);
for x:=0 to 16 do
 begin
  for y:=0 to 16 do
   begin
    PixRef := GetPixel(tdc, x, y);
    if PixRef = RGB (200,200,200) then
     begin
      setpixel (tDC, x, y, GetSysColor (COLOR_MENU));
     end;
   end;
 end;
BitBlt (PDrwItStruct^.hDC, PDrwItStruct^.rcItem.Left+2,
        PDrwItStruct^.rcItem.Top+1, 16, 16, tdc, 0, 0, SrcCopy);
TextRect := PDrwItStruct^.rcItem;
TextRect.Left := TextRect.Left+22;
DrawText (PDrwItStruct^.hDC, PChar(TextToDraw), Length(TextToDraw), TextRect,
         DT_SINGLELINE or DT_VCENTER or DT_LEFT);
deletedc (tdc);
if PDrwItStruct^.itemAction = ODA_SELECT then
 begin
{  MNull_Pen,
MColor_Pen,
MColor_Menu_Pen     : HPEN;

MColor_Brush,
MCOlor_menu_Brush   : HBRUSH;}

//   DeleteObject(SelectObject(PDrwItStruct^.hdc, MNull_Pen));

   if (PDrwItStruct^.itemState and ODS_SELECTED) <> 0  then
    begin
     {SetBkColor(PDrwItStruct^.HDC, GetSysColor(COLOR_HIGHLIGHT));
      DeleteObject(SelectObject(PDrwItStruct^.HDC,GetSysColorBrush(COLOR_HIGHLIGHT)));
      DeleteObject(SelectObject(PDrwItStruct^.hDC,CreatePen(PS_SOLID ,0,GetSysColor(COLOR_MENUTEXT))));}
     SetTextColor(PDrwItStruct^.HDC, RGB(0,0,0));
     SetBkColor(PDrwItStruct^.HDC, RGB(192,192,255));

//      DeleteObject(SelectObject(PDrwItStruct^.HDC, MColor_Brush));
//      DeleteObject(SelectObject(PDrwItStruct^.hDC, MColor_Pen));

   {swapBitmaps}
     TempBMP:=HDrawBitmapH;
     HDrawBitmapH:=HDrawBitmap;
     HDrawBitmap:=TempBMP;

    end
     else
      begin

//       DeleteObject(SelectObject(PDrwItStruct^.HDC, MColor_menu_Brush));
 //      DeleteObject(SelectObject(PDrwItStruct^.hdc,   MColor_Menu_Pen));
      end;

     Rectangle(PDrwItStruct^.HDC, PDrwItStruct^.rcItem.Left,
                PDrwItStruct^.rcItem.Top, PDrwItStruct^.rcItem.Right, PDrwItStruct^.rcItem.Bottom);
     tdc:=CreateCompatibleDC(PaintStruct.hdc);
     SelectObject(tdc,HDrawBitmap);

{for x:=0 to 16 do begin
for y:=0 to 16 do begin
PixRef:=GetPixel(tDC,x,y);
if PixRef=RGB(200,200,200) then begin
setpixel(tDC,x,y,GetSysColor(COLOR_MENU));
end;
end;
end;}
     BitBlt(PDrwItStruct^.hDC, PDrwItStruct^.rcItem.Left+2, PDrwItStruct^.rcItem.Top+1, 16,
             16, tdc, 0, 0, SrcCopy);
     TextRect:=PDrwItStruct^.rcitem;
     TextRect.Left:=TextRect.Left+22;
     DrawText(PDrwItStruct^.hDC,PChar(TextToDraw),Length(TextToDraw),TextRect,
                  DT_SINGLELINE or DT_VCENTER or DT_LEFT);
     deletedc(tdc);
   end;
 Result:=True;
end;
{
WM_MEASUREITEM:
    begin
   if PMeasureItemStruct(lparam).CtlType<>odt_menu then halt;
      PMeasureItemStruct(lparam).itemWidth:=78;
      PMeasureItemStruct(lparam).itemHeight:=18;

     end;

  WM_DRAWITEM:
    begin

      if PDrawItemStruct(lparam).hwndItem=button1 then begin

      DrawButton(PDrawItemStruct(lparam),btn_pstr,bmpBTNExit,bmpBTNExitP,32);
      End;

      if PDrawItemStruct(lparam).hwndItem=button2 then begin
      DrawButton(PDrawItemStruct(lparam),btn_pstr,bmpBTNHide,bmpBTNHideP,32);
      End;

      if PDrawItemStruct(lparam).hwndItem=button3 then begin
      DrawButton(PDrawItemStruct(lparam),btn_pstr,bmpBTNSave,bmpBTNSaveP,32);
      End;

      if PDrawItemStruct(lparam).hwndItem=button4 then begin
      DrawButton(PDrawItemStruct(lparam),btn_pstr,bmpBTNHelp,bmpBTNHelpP,16);
      End;

      if PDrawItemStruct(lparam).itemID=ID_OPENCD then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuOpenCD,bmpMenuOpenCDH,menu _opencd);
      end;

      if PDrawItemStruct(lparam).itemID=ID_CloseCD then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuCloseCD,bmpMenuCloseCDH,me nu_closecd);
      end;

      if PDrawItemStruct(lparam).itemID=ID_OPTIONS then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuOptions,bmpMenuOptionsH,me nu_settings);
      end;

      if PDrawItemStruct(lparam).itemID=ID_HIDE then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuHide,bmpMenuHideH,menu_hid e);
      end;

      if PDrawItemStruct(lparam).itemID=ID_HELP then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuHelp,bmpMenuHelpH,menu_hel p);
      end;

      if PDrawItemStruct(lparam).itemID=ID_EXIT then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuExit,bmpMenuExitH,menu_exi t);
      end;

      if PDrawItemStruct(lparam).itemID=ID_RUSSIAN then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuLangRus,bmpMenuLangRusH,"? onneee ;");
      end;

      if PDrawItemStruct(lparam).itemID=ID_ENGLISH then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuLangEng,bmpMenuLangEngH,"E nglish");
      end;

      if PDrawItemStruct(lparam).itemID=ID_LANGUAGE then begin
      DrawMenuItem(PDrawItemStruct(lparam),menu_pstr,bmpMenuLang,bmpMenuLangH,  menu_langauge);
      end;

    end;     }


Не помню откуда взял, с какого-то форума, но очень хочется поюзать. А вот как - не знаю. Что передавать в структурах?


 
dimodim   (2006-05-30 12:04) [1]

вставь фнкцию в обработчик


 
parovoZZ ©   (2006-05-30 19:07) [2]

Ну вообщем надо всё заново делать, это доводить до ума рехнёшься.



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

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

Наверх




Память: 0.48 MB
Время: 0.032 c
2-1148886556
ttt_111
2006-05-29 11:09
2006.06.18
Каким образом можно сохранять изменяемый код?


2-1148914109
0_o
2006-05-29 18:48
2006.06.18
Обращение к родительской ветке древа


2-1149200694
[stalker]
2006-06-02 02:24
2006.06.18
Проблемма с динамическим массивом


1-1147201373
Leonardo
2006-05-09 23:02
2006.06.18
Своя рамка в ListBox


15-1147987692
TDelphiWebScript
2006-05-19 01:28
2006.06.18
[DelphiWebScript] Как изменять размер динамических массивов ?