Windows 编程[1] - 窗体生成的过程一
Windows 编程[1] - 窗体生成的过程一
涂孟超 发表于3年前
Windows 编程[1] - 窗体生成的过程一
  • 发表于 3年前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购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.

 
 
 
 
 

 

 

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

共有 人打赏支持
粉丝 12
博文 2004
码字总数 14107
×
涂孟超
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: