/** * Copyright (C) 2014-2050 SOUI团队 * All rights reserved. * * @file SRealWnd.h * @brief * @version v1.0 * @author soui * @date 2014-07-06 * * Describe */ #pragma once #include "core/Swnd.h" ////////////////////////////////////////////////////////////////////////// // Real Window Control // Binding a real window // // Usage: // namespace SOUI { /** * @class SRealWndParam * @brief RealWnd窗口参数 * * Describe RealWnd窗口参数 */ class SOUI_EXP SRealWndParam { public: /** * SRealWndParam::SRealWndParam * @brief 构造函数 * * Describe 构造函数 */ SRealWndParam(); /** * SRealWndParam::~SRealWndParam * @brief 析构函数 * * Describe 析构函数 */ ~SRealWndParam(); SStringT m_strClassName; /**< 类名 */ SStringT m_strWindowName; /**< 窗口名 */ DWORD m_dwStyle; /**< 窗口样式 */ DWORD m_dwExStyle; /**< 窗口扩展样式 */ pugi::xml_document m_xmlParams; /**< 文档 */ }; /** * @class SRealWnd * @brief * * Describe */ class SOUI_EXP SRealWnd : public SWindow { SOUI_CLASS_NAME(SRealWnd, L"realwnd") public: /** * SRealWnd::SRealWnd * @brief 构造函数 * * Describe 构造函数 */ SRealWnd(); /** * SRealWnd::~SRealWnd * @brief 析构函数 * * Describe 析构函数 */ virtual ~SRealWnd(); /** * SRealWnd::GetRealHwnd * @brief 获取窗口句柄 * @param BOOL bAutoCreate -- 自动创建 * @return 返回HWND * * Describe 获取窗口句柄 */ const HWND GetRealHwnd(BOOL bAutoCreate=TRUE); /** * SRealWnd::GetRealWndParam * @brief 获取窗口参数 * @return 返回SRealWndParam * * Describe 获取窗口参数 */ const SRealWndParam & GetRealWndParam() { return m_realwndParam; } /** * SRealWnd::SetData * @brief 获取附加数据 * @param LPVOID lpData -- 附加数据 * * Describe 获取附加数据 */ void SetData(LPVOID lpData) { m_lpData=lpData; } /** * SRealWnd::GetData * @brief 获取附加数据 * @return 返回LPVOID * * Describe 获取附加数据 */ const LPVOID GetData() { return m_lpData; } SOUI_ATTRS_BEGIN() ATTR_STRINGT(L"wndclass", m_realwndParam.m_strClassName, FALSE) ATTR_STRINGT(L"wndname", m_realwndParam.m_strWindowName, FALSE) ATTR_HEX(L"style", m_realwndParam.m_dwStyle, FALSE) ATTR_HEX(L"exstyle", m_realwndParam.m_dwExStyle, FALSE) ATTR_BOOL(L"init",m_bInit,FALSE) SOUI_ATTRS_END() protected: /** * SRealWnd::NeedRedrawWhenStateChange * @brief 状态修改后重绘 * @return 返回BOOL * * Describe 状态修改后重绘 */ virtual BOOL NeedRedrawWhenStateChange(); /** * SRealWnd::InitFromXml * @brief 初始化 * @return 返回BOOL * * Describe 初始化 */ virtual BOOL InitFromXml(pugi::xml_node xmlNode); virtual BOOL OnRelayout(const CRect &rcWnd); /** * SRealWnd::OnShowWindow * @brief 窗口显示 * @param BOOL bShow -- 是否显示 * @param UINT nStatus -- 状态 * * Describe 窗口显示 */ void OnShowWindow(BOOL bShow, UINT nStatus); /** * SRealWnd::OnDestroy * @brief 销毁 * * Describe 销毁 */ void OnDestroy(); /** * SRealWnd::OnPaint * @brief 绘制 * @param CDCHandle dc -- 绘制设备 * * Describe 消息响应函数 */ void OnPaint(IRenderTarget *pRT) {} /** * SRealWnd::ShowRealWindow * @brief 显示窗口 * * Describe 显示窗口 */ void ShowRealWindow(); /** * SRealWnd::InitRealWnd * @brief 初始化窗口 * * Describe 初始化窗口 */ BOOL InitRealWnd(); SOUI_MSG_MAP_BEGIN() MSG_WM_PAINT_EX(OnPaint) MSG_WM_DESTROY(OnDestroy) MSG_WM_SHOWWINDOW(OnShowWindow) SOUI_MSG_MAP_END() SRealWndParam m_realwndParam; /**< 窗口参数 */ BOOL m_bInit; /**< 是否初始化 */ HWND m_hRealWnd; /**< 窗口句柄 */ LPVOID m_lpData; /**< 附加参数 */ }; }//namespace SOUI