DELPHI中的窗口管理

本文探讨了DELPHI程序中窗口如何在任务栏显示为button,深入TApplication和TCustomForm的创建过程,解析了窗口特性及父窗口对任务栏按钮的影响,详细解释了窗口最小化和最大化的行为机制。
摘要由CSDN通过智能技术生成

    先思考一个问题,为什么每个delphi程序(泛指一个exe)都会在任务栏上有一个类似button的东西呢?

    这是因为有了窗口才会有这个东东出现。那什么样的窗口可以会在任务栏出现button东东呢?让我们进入delphi源代码吧!

    查TApplication代码实现,可以发现会执行createhandle:

procedure TApplication.CreateHandle;
var
  TempClass: TWndClass;
  SysMenu: HMenu;
begin
  if not FHandleCreated and not IsConsole then
  begin
    FObjectInstance := Classes.MakeObjectInstance(WndProc);
    if not GetClassInfo(HInstance, WindowClass.lpszClassName, TempClass) then
    begin
      WindowClass.hInstance := HInstance;//指明窗口的应用程序实例句柄
      if Windows.RegisterClass(WindowClass) = 0 then
        raise EOutOfResources.Create(SWindowClass);
    end;
    FHandle := CreateWindow(WindowClass.lpszClassName, PChar(FTitle),
      WS_POPUP or WS_CAPTION or WS_CLIPSIBLINGS or WS_SYSMENU
      or WS_MINIMIZEBOX,
      GetSystemMetrics(SM_CXSCREEN) div 2,//

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值