窗體生成的過程

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章