zoukankan      html  css  js  c++  java
  • 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.
    
    计划从这里出发, 了解更多底层的东西; 先弄明白这些代码吧!

  • 相关阅读:
    MySQL事务处理2
    servlet过滤器配置白名单、黑名单
    Freemarker生成静态代码实例
    FreeMarker---数据类型
    创建第一个freemarker
    JDBC编程之优化
    关于ComponentName的使用
    launchMode使用详解
    android开发之使用上下文菜单
    android开发之shape详解
  • 原文地址:https://www.cnblogs.com/del/p/1142768.html
Copyright © 2011-2022 走看看