程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Windows 編程[1] - 窗體生成的過程一

Windows 編程[1] - 窗體生成的過程一

編輯:Delphi

本例效果圖:

Windows 編程[1] - 窗體生成的過程一 

  新建一個控制台程序, 貼入下面代碼即可運行:

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.

計劃從這裡出發, 了解更多底層的東西; 先弄明白這些代碼吧!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved