Windows 编程[5] - 学习窗体生成的过程五

根据前面的介绍, 可以完成一个窗口的建立了:

program Project1;



uses

  Windows, Messages;



{窗口回调函数, 必须声明在使用它的程序前面}

function WndProc(wnd: HWND; msg: UINT; wParam: Integer; lParam: Integer): Integer; stdcall;

begin

  Result := 0;

  if msg = WM_DESTROY then {当窗口销毁时}

    PostQuitMessage(0)     {告诉 GetMessage: 退出吧!}

  else

    Result := DefWindowProc(wnd, msg, wParam, lParam); {其他消息做默认处理}

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         := 0;                        {没指定图标}

  MyWndClass.hCursor       := LoadCursor(0, IDC_ARROW); {选用了系统提供的指针}

  MyWndClass.hbrBackground := HBRUSH(COLOR_WINDOW + 1); {背景色使用 Windows 默认的窗口颜色}

  MyWndClass.lpszMenuName  := nil;                      {不指定默认菜单}

  MyWndClass.lpszClassName := 'MyWindowClass';          {给窗口类型命名}



  {注册窗口类型}

  RegisterClass(MyWndClass);



  {建立窗口并返回句柄}

  hWnd := CreateWindow('MyWindowClass',        {窗口类型名}

                       '新窗口',               {标题}

                       WS_OVERLAPPEDWINDOW,    {窗口的常规样式}

                       Integer(CW_USEDEFAULT), {默认水平位置}

                       Integer(CW_USEDEFAULT), {默认垂直位置}

                       Integer(CW_USEDEFAULT), {默认宽度}

                       Integer(CW_USEDEFAULT), {默认高度}

                       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)