|
전체를 다빠꿀 필요는 없구요. 제가 모르는부분(여기 표시)만 바꿔주셔도^^;
FUNCTION DefineShadesOfGrayPalette: hPalette; <----여기
CONST
PaletteVersion = $0300; // "Magic Number" for Window's LOGPALETTE
VAR
i : INTEGER;
LogicalPalette : TMaxLogPalette; <---여기
ScreenDeviceContext: hDC;
BEGIN
LogicalPalette.palVersion := PaletteVersion;
LogicalPalette.palNumEntries := 256;
ScreenDeviceContext := GetDC(hWnd_DeskTop);
TRY
// Get first and last 10 entries from SystemPalette
GetSystemPaletteEntries(ScreenDeviceContext, 0, 10,
LogicalPalette.palPalEntry[0]);
GetSystemPaletteEntries(ScreenDeviceContext, 246, 10,
LogicalPalette.palPalEntry[246])
FINALLY
ReleaseDC(0, ScreenDeviceContext)
END;
// Skip over first 10 and last 10 "fixed" SystemPalette entries
FOR i := 0 TO 255-20 DO
BEGIN
// Stetch palette entries 0..235 to span gray scale range 0..255
LogicalPalette.palPalEntry[10+i].peRed := MulDiv(i, 255, 235); <----여기
LogicalPalette.palPalEntry[10+i].peGreen := MulDiv(i, 255, 235);
LogicalPalette.palPalEntry[10+i].peBlue := MulDiv(i, 255, 235);
LogicalPalette.palPalEntry[10+i].peFlags := PC_NOCOLLAPSE;
END;
RESULT := CreatePalette(pLogPalette(@LogicalPalette)^); <----여기
END {DefineShadesOfGrayPalette};
|