var
Form1: TForm1;
Display : Integer;
implementation
{$R *.DFM}
procedure SetWallpaperExt(sWallpaperBMPPath : string; nStyle, nX, nY :integer );
var
reg : TRegIniFile;
s1 : string;
X, Y : integer;
begin
reg := TRegIniFile.Create('Control PanelDesktop' );
with reg do
begin
s1 := '0';
X := 0;
Y := 0;
case nStyle of
WPS_Tile : s1 := '1';
WPS_Center: nStyle := WPS_Tile;
WPS_XY :
begin
nStyle := WPS_Tile;
X := nX;
Y := nY;
end;
end;
==> ZZOM님.. 민님 감솨합니다.. 리플을 ㅠ_ㅠ..
배경화면 넣기네요 ^^; 배경화면 넣기는 제가 만들어서 따로 사용하고 있거든요.. 문제는 달력을 넣어 달래요 ㅡ_ㅡ; 그래서.. 고민 하고 있습니다..
제 생각은.. 윈도를 만든다.. 항상 HWND_BOTTOM으로 맹근다. 글구 바탕 화면 캡춰해서 그린다. 물론 Form Style은 bsNone이구요.. 그런 후, 캡쳐 이미지 위에 달력을 그린다... ㅡㅡ+ 이런 전략이었는뎅..
캡쳐를 하니.. 제가 맹근 폼 이미지가 포함된체로 캡쳐되 버리네요 ㅠ_ㅠ.. 순수하게 바탕화면.. 만 캡쳐되어야하는데.. 그니깐, 제 폼 또는 다른 윈도우를 뺀 나머지 순수한 바탕화면을 캡쳐할 수 없나요? 바탕화면 자식 윈도우를 찾아 SW_HIDE를 시켜봤는뎅.. 문제는 원상 복귀가 ㅡ_ㅡ; ㅋㅋ 문제네요.. 원래 감춰진 윈도우까지 일괄적으로 SW_SHOW해보니.. 못보던 윈도우가 수십개가 떠서 난감해 하고 있습니다..
아무래도,, SW_HIDE시킨 윈도우 핸들을 죄다 기억했다가 SW_SHOW해야할 것 같아요. ㅠ_ㅠ.. 될지 않될지 모르겠지만, 우선 해보아야겠죠?
참조하세요...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Registry, StdCtrls;
const
WPS_Tile = 0; //바둑식 배열
WPS_Center = 1; //가운데
WPS_SizeToFit = 2; //늘리기
WPS_XY = 3; //x, y위치에 그리기
type
TForm1 = class(TForm)
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Button2: TButton;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Display : Integer;
implementation
{$R *.DFM}
procedure SetWallpaperExt(sWallpaperBMPPath : string; nStyle, nX, nY :integer );
var
reg : TRegIniFile;
s1 : string;
X, Y : integer;
begin
reg := TRegIniFile.Create('Control PanelDesktop' );
with reg do
begin
s1 := '0';
X := 0;
Y := 0;
case nStyle of
WPS_Tile : s1 := '1';
WPS_Center: nStyle := WPS_Tile;
WPS_XY :
begin
nStyle := WPS_Tile;
X := nX;
Y := nY;
end;
end;
WriteString( '', 'Wallpaper' , sWallpaperBMPPath );
WriteString( '', 'TileWallpaper' , s1 );
WriteString( '', 'WallpaperStyle' , IntToStr( nStyle ));
WriteString( '', 'WallpaperOriginX', IntToStr( X ) );
WriteString( '', 'WallpaperOriginY', IntToStr( Y ) );
end;
reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE );
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Display := 0;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Display := 1;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Display := 2;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Display := 1;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// 지우기
SetWallpaperExt('', Display, 0, 0 );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// 그리기
SetWallpaperExt('C:TEMP바탕그림.bmp', Display, 0, 0 );
end;
end.