本例效果圖:
新建一個控制台程序, 貼入下面代碼即可運行:
program Project1;
uses
Windows, Messages;
{等待調用的過程, 用於在窗體上繪制文本}
Procedure OnPaint(h: HDC);
const
s = 'CodeGear Delphi 2007';
begin
TextOut(h, 10, 10, PChar(s), Length(s));
end;
{窗口回調過程}
function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall;
var
Handle: HDC;
ps: PAINTSTRUCT;
begin
case msg of
WM_PAINT: begin
Handle := BeginPaint(wnd, ps);
OnPaint(Handle);
EndPaint(wnd, ps);
result := 0;
end;
WM_DESTROY: begin
PostQuitMessage(0);
result := 0;
end;
else
Result := DefWindowProc(wnd, msg, wParam, lParam);
end;
end;
{主程序}
var
hWnd : THandle;
Msg : TMsg;
MyWndClass : TWndClass;
begin
MyWndClass.style := CS_HREDRAW or CS_VREDRAW;
MyWndClass.lpfnWndProc := @WndProc;
MyWndClass.cbClsExtra := 0;
MyWndClass.cbWndExtra := 0;
MyWndClass.hInstance := HInstance;
MyWndClass.hIcon := LoadIcon(0, IDI_QUESTION);
MyWndClass.hCursor := LoadCursor(0, IDC_ARROW);
MyWndClass.hbrBackground := HBRUSH(GetStockObject(WHITE_BRUSH));
MyWndClass.lpszMenuName := nil;
MyWndClass.lpszClassName := 'MyWindowClass';
RegisterClass(MyWndClass);
hWnd := CreateWindow('MyWindowClass', '這是窗口標題', WS_OVERLAPPEDWINDOW,
100, 100, 250, 150, 0, 0, HInstance, nil);
ShowWindow(hWnd, SW_SHOWNORMAL);
UpdateWindow(hWnd);
while(GetMessage(Msg, 0, 0, 0)) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.