Windows SDK:What is a top-level window?

原文地址:Here

Q:什么是顶层窗口?

A:顶层窗口是非子窗口的窗口,例如,没有设置WS_CHILD的style。

注意:

1.不像子窗口,顶层窗口可以被显示在屏幕的任意位置;

2.一些定义为顶层窗口是“没有父窗口的窗口”;这正确但会引起混淆:很多人就会认为每一个窗口被CreateWindow(EX)创建时传递了有效的hWndParent参数“就拥有父窗口”,依据此定义它们就不是顶层窗口;实际上hWndParent参数可能或者是父窗口句柄或者是所有者窗口(owner window)句柄;假如hWndParent参数有效并且并未设置WS_CHILD的style,那么我们就创建了一个顶层被所有者窗口(ownered window);

3.一个顶层窗口可以被所有(ownered)也可以不被所有但是他绝不是子窗口(child);我们可以更直接的说顶层窗口可以有所有者(owner)但是决不能有父窗口(parent);

4.顶层窗口可以说或者是overlapped windows(拥有WS_OVERLAPPED style通常应用程序主窗口)或者是popup windows(拥有WS_POPUP style,通常是一些临时窗口想message boxes和dialogs);

5.在CreateWindow(EX)、MoveWindow、SetWindowPos等等类似函数设置窗口时使用的坐标系总是屏幕坐标系(相对于屏幕的坐上角)。


Examples:

code:

// create a top-level window (not owned)
HWND hWnd = CreateWindow(szWindowClass, szTitle, 
              WS_OVERLAPPED, // WS_CHILD style is not set, so it's a top-level window.
              CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 
              NULL,          // no handle to the owner, so it's not owned.
              NULL, hInstance, NULL);
code:

// create a top-level window (owned)
HWND hWnd = CreateWindow(szWindowClass, szTitle, 
              WS_OVERLAPPED, // WS_CHILD style is not set, so it's a top-level window
              CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 
              hWndParent,    // handle to the owner, so it's an owned window
              NULL, hInstance, NULL);

See also

Windows SDK: What is a child window?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值