窗体生成的过程

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.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值