Windows 编程[1] - 窗体生成的过程一

本例效果图:

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.


 
   
计划从这里出发, 了解更多底层的东西; 先弄明白这些代码吧!

你可能感兴趣的:(windows)