zoukankan      html  css  js  c++  java
  • 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.
    
    接下来再继续完善这些代码!

  • 相关阅读:
    英语常用口语
    单词记忆(3)
    电视制式及声音制式的划分
    单词记忆(2)
    单词记忆(1)
    低调做人 高调做事
    分析数据库死锁原因的方法
    详细查看数据库SQL执行计划
    如果查看数据库链接数
    刷新所有视图
  • 原文地址:https://www.cnblogs.com/del/p/1155189.html
Copyright © 2011-2022 走看看