살구
Windows 인터페이스의 주요 특징은 다채로운 아이콘 표시입니다. 아이콘은 Windows 바탕 화면을 아름답게 할 뿐만 아니라 직관적인 조작을 용이하게 하여 사용자에게 큰 편의성을 제공합니다. Windows 스타일은 프로그램 인터페이스를 디자인할 때 좋은 참고 자료입니다.
Delphi는 일반적으로 아이콘 설정을 위한 두 가지 방법을 제공합니다. 하나는 PRoject 옵션에서 애플리케이션의 아이콘을 지정하는 것이고, 다른 하나는 Object Inspector의 속성 페이지에서 Icon 속성을 제공하는 것입니다. Windows 시작 메뉴처럼 아름다운 팝업 메뉴를 디자인하려면 코드를 직접 작성해야 합니다.
대부분의 Windows 응용 프로그램에는 아이콘 자체가 있는 것으로 알고 있습니다. 프로그램 자체에서 아이콘을 꺼내고 아이콘 크기를 조정한 후 팝업 메뉴에 추가하기만 하면 아름다운 메뉴가 완성됩니다.
먼저 ExtractAssociatedIcon을 사용하여 특정 프로그램에서 아이콘을 얻습니다. 그러나 아이콘의 크기가 다양하고 동시에 델파이에서는 아이콘 크기를 조정하는 기능을 제공하지 않습니다. 아이콘 파일을 비트맵 파일로 변환한 다음 비트맵 파일의 크기를 조정하고 마지막으로 메뉴 항목을 비트맵 파일로 대체해야 합니다. 그 소스코드는 다음과 같습니다.
유형
TForm1 = 클래스(TForm)
메인메뉴1: TMainMenu;
파일1: TMenuItem;
/****메뉴 표시줄의 항목****/
Open1: TMenuItem;
/****메뉴 파일의 항목****/
절차 FormCreate(보내는 사람: TObject);
절차 FormShow(보내는 사람: TObject);
사적인
{로컬 매개변수 선언}
공공의
{전역 매개변수 선언}
Icn, Txt, MnuItm: TBitmap;
끝;
절차 TForm2.FormCreate(Sender: TObject);
var R: TRect;
HIcn: HIcon;
Ic: 티콘;
색인: 단어;
파일 이름: PChar;
시작하다
/**프로그램에서 아이콘 가져오기**/
Ic:=TIcon.Create;
Ic.Handle:=ExtractAssociatedIcon(Hinstance, /*파일 이름 및 경로*/, Index);
/** 비트맵 생성**/
Txt:=TBitmap.Create;
Txt로 할게
시작하다
너비:=Canvas.TextWidth('테스트');
높이:=Canvas.TextHeight('Tes');
Canvas.TextOut(0,0,' 테스트');
끝;
/**위에서 만든 비트맵에 아이콘을 복사하고 크기를 조정합니다**/
Icn:=TBitmap.Create;
Icn do와 함께
시작하다
너비:=32;
높이:=32;
Brush.Color:=clBtnFace;
Canvas.Draw(0,0,Ic);
끝;
/** 최종 비트맵 파일 생성**/
MnuItm:=TBitmap.Create;
MnuItm과 함께
시작하다
너비:=텍스트.너비+18;
높이:=18;
Canvas do와 함께
시작하다
Brush.Color:=clBtnFace;
펜.색상:=clBtnFace;
Brush.Style:=bsSolid;
직사각형(0,0,너비,높이);
복사모드:=cmSrcAnd;
StretchDraw(Rect(0,0,16,16),Icn);
복사모드:=cmSrcAnd;
Draw(16,8-(Txt.Height div 2),Txt);
끝;
끝;
끝;
절차 TForm2.FormShow(Sender: TObject);
var
ItemInfo: TMenuItemInfo;
hBmp1:T핸들;
시작하다
HBmp1:=MnuItm.Handle;
ItemInfo를 사용하면
시작하다
cbSize:= SizeOf(ItemInfo);
fMask:= MIIM_TYPE;
f유형:= MFT_BITMAP;
dwTypeData:= PChar(MakeLong( hBmp1, 0 ));
끝;
/** 메뉴 항목 Open1을 비트맵으로 교체 **/
SetMenuItemInfo( GetSubMenu( MainMenu1.Handle, File1.MenuIndex ),
Open1.MenuIndex, true, ItemInfo );
끝;
위 프로그램은 Windows98 및 Delphi 4.0 환경에서 디버깅되었습니다.