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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
2-1148821711
Ray
2006-05-28 17:08
2006.06.18
Нарисованную картинку - в файл


15-1148273694
Ega23
2006-05-22 08:54
2006.06.18
С Днём рождения! 22 мая (настоящее)


15-1148219271
NailMan
2006-05-21 17:47
2006.06.18
Воровство логотипов? Плагиат?


15-1148546247
_Hawk_
2006-05-25 12:37
2006.06.18
Как преобразовать текст?


15-1147467855
Yanis
2006-05-13 01:04
2006.06.18
Где скачать Delphi 2 и Delphi 1?





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