Главная страница
    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.011 c
15-1148227168
php
2006-05-21 19:59
2006.06.18
Как сравнить даты в формате дд.мм.гггг в php?


2-1149170875
Fer
2006-06-01 18:07
2006.06.18
незадача с RadioButton


15-1148405618
Суслик
2006-05-23 21:33
2006.06.18
Про презентацию от Borland


2-1149192556
Mr tray
2006-06-02 00:09
2006.06.18
сообщение, узнающее координаты выделенного текста


1-1146855811
KBsoft
2006-05-05 23:03
2006.06.18
Форма в DLL





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