|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"95/NT4のシステムメニューに小ざかしいBitmapを"
はい。 かとちんです。\(^0^)/
Win98 や Win2000 ではシステムメニューに小ざかしいBitmap(元に戻す、最小化、最大
化、閉じるの4つ)が付いてますね。にゃろーと思って、95/NT4 のシステムメニューで
も実現してみました。こんなこと凝る人はいないと思いますが、一応そういえ
ばできたなーってサンプルです。
// これも汎用関数かな。
function Is95orNT4: Boolean;
var
VI: TOSVersionInfo;
begin
Result := False;
VI.dwOSVersionInfoSize := SizeOf(VI);
if GetVersionEx(VI) then
begin
with VI do
begin
case dwPlatformId of
VER_PLATFORM_WIN32_NT:
Result := (dwMajorVersion = 4);
VER_PLATFORM_WIN32_WINDOWS:
Result := (dwMajorVersion = 4) and
(dwMinorVersion < 10);
end;
end;
end
end;
procedure TForm1.FormCreate(Sender: TObject);
const
ButtonStyle: array[0..3] of Integer = (
DFCS_CAPTIONRESTORE, DFCS_CAPTIONMIN,
DFCS_CAPTIONMAX, DFCS_CAPTIONCLOSE
);
var
Bmp: TBitmap;
I: Integer;
R: TRect;
H: THandle;
procedure SetMenuBmp(Index, GIndex: Integer);
begin
SetMenuItemBitmaps(H, Index, MF_BYPOSITION,
FBmps[GIndex].Handle, FBmps[GIndex].Handle);
end;
begin
if (biSystemMenu in BorderIcons) and Is95orNT4 then
begin
for I := 0 to 3 do
begin
Bmp := TBitmap.Create;
R := Rect(0, 0, 10, 10);
Bmp.Width := R.Right;
Bmp.Height := R.Bottom;
with Bmp.Canvas do
begin
Brush.Color := clMenu;
FillRect(R);
InflateRect(R, 2, 2); // ボタン枠枠を除外する(ずらす)
DrawFrameControl(Handle, R, DFC_CAPTION,
ButtonStyle[I] or DFCS_MONO);
// ちょっと右にずらす
Bmp.Width := 12;
CopyRect(Rect(2, 0, 12, 10),
Bmp.Canvas, Rect(0, 0, 10, 10));
FillRect(Rect(0, 0, 2, 10));
end;
Bmp.PixelFormat := pf1bit;
FBmps[I] := Bmp;
end;
H := GetSystemMenu(Handle, False);
SetMenuBmp(0, 0);
SetMenuBmp(3, 1);
SetMenuBmp(4, 2);
SetMenuBmp(6, 3);
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
I: Integer;
begin
for I := 0 to 3 do FBmps[I].Free;
end;
▲● 2000/10/15 21:33 JDX06162(とんちんかんちんかとちん)
■ Inprise Delphi ... The Great Development Kit
uses D2Desktop, D3CSS, D4CSS, D5ENT;
- FDELPHI MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 00/10/20 -
Original document by かとちん 氏 ID:(JDX06162)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|