Главная страница
    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.46 MB
Время: 0.01 c
15-1148380909
Василий Алибабаевич
2006-05-23 14:41
2006.06.18
еМул - количество отданой инфы


15-1148146249
Nous Mellon_
2006-05-20 21:30
2006.06.18
Михаил Веллер. Интересный взгляд.


11-1128859946
DillerXX
2005-10-09 16:12
2006.06.18
ProgressBar


1-1147409869
Kostromich
2006-05-12 08:57
2006.06.18
TWebBrowser Навигация


15-1148379401
simmoril
2006-05-23 14:16
2006.06.18
Помогите решить задачу





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