slot 0.0.1
A real time UI render framework
载入中...
搜索中...
未找到
Public 成员函数 | Private 成员函数 | Private 属性 | 所有成员列表
z8::DX12FloatingWindowManager::Host类 参考final
类 z8::DX12FloatingWindowManager::Host 继承关系图:
Inheritance graph
[图例]
z8::DX12FloatingWindowManager::Host 的协作图:
Collaboration graph
[图例]

Public 成员函数

 Host (DX12Render &render, ui::BaseNode &root)
 
 ~Host ()
 
ui::PanelGroupNodeGetGroup () const
 
ui::BaseNodeGetRoot () const
 
bool IsClosePending () const
 
void RebuildBatch ()
 
void SynchronizeWindow ()
 
void Update ()
 
void Draw ()
 

Private 成员函数

bool IsRootAlive () const
 
LRESULT ResolveNonClientHit (LPARAM lParam) const
 
void RenderInteractiveResizeFrame ()
 
LRESULT HandleWindowMessage (HWND window, UINT message, WPARAM wParam, LPARAM lParam) override
 
void Resize ()
 
void SynchronizeRectFromWindow ()
 
- Private 成员函数 继承自 z8::Win32WindowHost
 Win32WindowHost ()=default
 
virtual ~Win32WindowHost ()
 
void AttachWindow (HWND window, EventTarget &inputTarget, HWND coordinateWindow=nullptr)
 
void DetachWindow ()
 
bool DispatchInputMessage (HWND window, UINT message, WPARAM wParam, LPARAM lParam, LRESULT &result)
 

Private 属性

DX12RenderRender = nullptr
 
ui::BaseNodeRoot = nullptr
 
ui::PanelGroupNodeGroup = nullptr
 
ui::SceneNodeScene = nullptr
 
HWND Wnd = nullptr
 
DX12WindowSurface Surface
 
DX12DepthStencil DepthTarget
 
std::unique_ptr< DX12RenderBatchBatch
 
int Width = 1
 
int Height = 1
 
unsigned Dpi = USER_DEFAULT_SCREEN_DPI
 
float DpiScale = 1.0f
 
bool ResizePending = false
 
bool SuppressWindowSync = false
 
bool ClosePending = false
 
bool InSizeMove = false
 

构造及析构函数说明

◆ Host()

z8::DX12FloatingWindowManager::Host::Host ( DX12Render & render,
ui::BaseNode & root )
inline
函数调用图:

◆ ~Host()

z8::DX12FloatingWindowManager::Host::~Host ( )
inline
函数调用图:

成员函数说明

◆ Draw()

void z8::DX12FloatingWindowManager::Host::Draw ( )
inline
函数调用图:
这是这个函数的调用关系图:

◆ GetGroup()

ui::PanelGroupNode * z8::DX12FloatingWindowManager::Host::GetGroup ( ) const
inline

◆ GetRoot()

ui::BaseNode * z8::DX12FloatingWindowManager::Host::GetRoot ( ) const
inline

◆ HandleWindowMessage()

LRESULT z8::DX12FloatingWindowManager::Host::HandleWindowMessage ( HWND window,
UINT message,
WPARAM wParam,
LPARAM lParam )
inlineoverrideprivatevirtual

实现了 z8::Win32WindowHost.

函数调用图:

◆ IsClosePending()

bool z8::DX12FloatingWindowManager::Host::IsClosePending ( ) const
inline

◆ IsRootAlive()

bool z8::DX12FloatingWindowManager::Host::IsRootAlive ( ) const
inlineprivate

判断非拥有 Root 是否仍由 Layout 持有。

Panel 提交到其他 Group 时会在当前 WNDPROC 内销毁旧 Group,而 Host 必须 延迟到下一帧 Reconcile 才能安全销毁 HWND。Nodes 已在提交末尾重建, 所以纯地址查询可以封住这段窗口消息重入期,且不会解引用悬空指针。

这是这个函数的调用关系图:

◆ RebuildBatch()

void z8::DX12FloatingWindowManager::Host::RebuildBatch ( )
inline
函数调用图:
这是这个函数的调用关系图:

◆ RenderInteractiveResizeFrame()

void z8::DX12FloatingWindowManager::Host::RenderInteractiveResizeFrame ( )
inlineprivate
函数调用图:
这是这个函数的调用关系图:

◆ Resize()

void z8::DX12FloatingWindowManager::Host::Resize ( )
inlineprivate
函数调用图:
这是这个函数的调用关系图:

◆ ResolveNonClientHit()

LRESULT z8::DX12FloatingWindowManager::Host::ResolveNonClientHit ( LPARAM lParam) const
inlineprivate

将 Floating HWND 的可见边缘统一交给 Win32 非客户区状态机。

point 使用屏幕坐标;ScreenToClient 后允许出现负数和超出客户区的值, 因而同一判断同时覆盖系统 frame 外侧与 UI 客户区内侧,消除两套 resize 捕获在左/上边缘竞争导致的概率性失效。

函数调用图:
这是这个函数的调用关系图:

◆ SynchronizeRectFromWindow()

void z8::DX12FloatingWindowManager::Host::SynchronizeRectFromWindow ( )
inlineprivate
函数调用图:
这是这个函数的调用关系图:

◆ SynchronizeWindow()

void z8::DX12FloatingWindowManager::Host::SynchronizeWindow ( )
inline
函数调用图:

◆ Update()

void z8::DX12FloatingWindowManager::Host::Update ( )
inline
函数调用图:
这是这个函数的调用关系图:

类成员变量说明

◆ Batch

std::unique_ptr<DX12RenderBatch> z8::DX12FloatingWindowManager::Host::Batch
private

◆ ClosePending

bool z8::DX12FloatingWindowManager::Host::ClosePending = false
private

◆ DepthTarget

DX12DepthStencil z8::DX12FloatingWindowManager::Host::DepthTarget
private

仅包含 SceneNode 的宿主创建深度目标,普通 Panel 不承担额外显存。

◆ Dpi

unsigned z8::DX12FloatingWindowManager::Host::Dpi = USER_DEFAULT_SCREEN_DPI
private

◆ DpiScale

float z8::DX12FloatingWindowManager::Host::DpiScale = 1.0f
private

◆ Group

ui::PanelGroupNode* z8::DX12FloatingWindowManager::Host::Group = nullptr
private

缓存创建时的节点类型,避免延迟回收窗口对悬空 Root 再次执行 RTTI。

◆ Height

int z8::DX12FloatingWindowManager::Host::Height = 1
private

◆ InSizeMove

bool z8::DX12FloatingWindowManager::Host::InSizeMove = false
private

◆ Render

DX12Render* z8::DX12FloatingWindowManager::Host::Render = nullptr
private

◆ ResizePending

bool z8::DX12FloatingWindowManager::Host::ResizePending = false
private

◆ Root

ui::BaseNode* z8::DX12FloatingWindowManager::Host::Root = nullptr
private

◆ Scene

ui::SceneNode* z8::DX12FloatingWindowManager::Host::Scene = nullptr
private

◆ SuppressWindowSync

bool z8::DX12FloatingWindowManager::Host::SuppressWindowSync = false
private

◆ Surface

DX12WindowSurface z8::DX12FloatingWindowManager::Host::Surface
private

Floating HWND 独占呈现表面,但复用主渲染器的设备、队列与 PSO。

◆ Width

int z8::DX12FloatingWindowManager::Host::Width = 1
private

◆ Wnd

HWND z8::DX12FloatingWindowManager::Host::Wnd = nullptr
private

该类的文档由以下文件生成: