Windows 编程 窗体生成的过程


本文整理自网络,侵删。

 
新建一个控制台程序, 贴入下面代码即可运行:
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.

相关阅读 >>

如何用Delphi实现子目录级的文件查询

Delphi 如何判断html编码格式,解决乱码问题

Delphi fmx窗体中控件对齐方式介绍

Delphi线程中动态创建ado控件

Delphi 跨平台的,在fmx中读取icon文件的每一帧到bitmap

Delphi基于高斯-拉普拉斯算子的图像边缘检测

Delphi获取文件创建时间、文件最后修改时间

如何用Delphi实现windows xp中“本地连接”的启用和禁用

Delphi自动适应屏幕分辨率的属性

Delphi调用sql分页存储过程实例

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...