DuiLib窗口样式和窗口扩展样式以及宏的解释

1、宏的解释

#define UI_WNDSTYLE_FRAME      (WS_VISIBLE | WS_OVERLAPPEDWINDOW)
#define UI_WNDSTYLE_CHILD      (WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN)
#define UI_WNDSTYLE_DIALOG     (WS_VISIBLE | WS_POPUPWINDOW | WS_CAPTION | WS_DLGFRAME | WS_CLIPSIBLINGS | WS_CLIPCHILDREN)

DuiLib 中,宏定义 UI_WNDSTYLE_FRAMEUI_WNDSTYLE_CHILDUI_WNDSTYLE_DIALOG 分别表示窗口的样式,用于在创建窗口时设置不同类型的窗口样式。

  1. UI_WNDSTYLE_FRAME
    • 该宏定义包含了一系列窗口样式,用于创建一个顶层窗口(具有标题栏和边框)。
    • WS_VISIBLE 表示窗口可见,将在创建时显示。
    • WS_OVERLAPPEDWINDOW 表示创建一个具有标题栏、边框、系统菜单、最小化和最大化按钮的顶层窗口。
  2. UI_WNDSTYLE_CHILD
    • 该宏定义包含了一系列窗口样式,用于创建一个子窗口(不具有标题栏和边框)。
    • WS_VISIBLE 表示窗口可见,将在创建时显示。
    • WS_CHILD 表示创建一个子窗口。
    • WS_CLIPSIBLINGS 表示当子窗口重叠时,不绘制其他兄弟窗口的区域。
    • WS_CLIPCHILDREN 表示当子窗口重叠时,不绘制其他子窗口的区域。
  3. UI_WNDSTYLE_DIALOG:
    • 该宏定义包含了一系列窗口样式,用于创建一个对话框式的窗口。
    • WS_VISIBLE 表示窗口可见,将在创建时显示。
    • WS_POPUPWINDOW 表示创建一个弹出式窗口。
    • WS_CAPTION 表示创建一个具有标题栏的窗口。
    • WS_DLGFRAME 表示创建一个具有对话框样式的窗口边框。
    • WS_CLIPSIBLINGS 表示当子窗口重叠时,不绘制其他兄弟窗口的区域。
    • WS_CLIPCHILDREN 表示当子窗口重叠时,不绘制其他子窗口的区域。

这些宏定义提供了一种便捷的方式来设置窗口的样式,可以根据不同的窗口类型选择适合的宏定义。在创建窗口时,可以将这些宏作为窗口样式参数传递给 Create() 函数,以创建不同类型的窗口。

2、DuiLib窗口样式和窗口扩展样式

DuiLib 中,窗口样式(Window Style)窗口扩展样式(Extended Window Style) 是用来定义窗口的外观和行为的常量值。它们可以在创建窗口时通过调用 Create() 或 CreateWindow() 函数的参数来设置。

  1. 窗口样式(Window Style):
  • 窗口样式是定义窗口基本外观和行为的常量值,例如是否显示标题栏、边框、系统菜单、最小化和最大化按钮等。常用的窗口样式包括:
    • WS_OVERLAPPEDWINDOW:创建一个具有标题栏、边框、系统菜单、最小化和最大化按钮的顶层窗口。
    • WS_POPUPWINDOW:创建一个具有标题栏、边框、系统菜单、最小化和最大化按钮的弹出式窗口。
    • WS_CHILD:创建一个子窗口,不具有标题栏和边框。
    • WS_VISIBLE:创建一个可见的窗口,将在创建时显示。
  1. 窗口扩展样式(Extended Window Style):
  • 窗口扩展样式是定义窗口更高级的外观和行为的常量值,例如是否启用透明度、是否支持分层绘制等。常用的窗口扩展样式包括:
    • WS_EX_LAYERED:启用窗口的分层绘制,使得可以通过设置透明度来实现窗口的半透明效果。
    • WS_EX_TOOLWINDOW:将窗口标识为工具窗口,通常用于显示工具栏或浮动窗口。
    • WS_EX_CLIENTEDGE:在窗口的客户区添加一个边框。
    • WS_EX_APPWINDOW:将窗口标识为应用程序窗口,用于在任务栏上显示应用程序图标。

在 DuiLib 中,创建窗口时,可以通过调用 Create() 函数来设置窗口样式和窗口扩展样式,例如:

// 创建一个顶层窗口(带标题栏和边框)并显示
pFrame->Create(NULL, _T("MyWindow"), UI_WNDSTYLE_FRAME, WS_EX_APPWINDOW);

在上面的例子中,使用了 UI_WNDSTYLE_FRAME 宏定义作为窗口样式,同时使用 WS_EX_APPWINDOW 作为窗口扩展样式。这样创建的窗口将是一个带标题栏和边框的顶层窗口,并且在任务栏上显示应用程序图标。

3、在 DuiLib 中,Create() 是用于创建窗口的函数,该函数的参数解析如下

  1. 第一个参数 nullptr:表示该窗口的父窗口,如果该参数为 nullptr,则表示创建的窗口为顶层窗口,没有父窗口。

  2. 第二个参数 MainFrameWnd::kClassName:表示要创建的窗口类的名称。在这里,MainFrameWnd::kClassName 可能是 LPCTSTR 类型的常量,指定了要创建的窗口类的名称。这通常是在窗口类定义中设置的类名称。

  3. 第三个参数 UI_WNDSTYLE_FRAME:表示窗口的样式。UI_WNDSTYLE_FRAME 是一个预定义的宏,用于指定创建一个具有标题栏和边框的窗口。这样创建的窗口将是一个具有窗口装饰的顶层窗口。

  4. 第四个参数 0:表示额外的窗口样式和窗口扩展样式。在这里没有使用额外的样式,因此传入了 0。

总结:

Create() 函数用于创建一个窗口,通过传入不同的参数,可以控制窗口的父子关系、窗口类名称、窗口样式等。
在示例中,使用 UI_WNDSTYLE_FRAME 创建一个具有标题栏和边框的顶层窗口。如果想要去掉标题栏,可以通过设置样式来实现,如前面的回答中所示。

猜你喜欢

转载自blog.csdn.net/qq_44918090/article/details/131832345