nim_duilib/duilib/Core/WindowBuilder.h
jiajia_deng 4933d1f2bc Remove dependency on shared
Signed-off-by: jiajia_deng <2894220@gmail.com>
2019-09-20 16:27:58 +08:00

41 lines
1.1 KiB
C++

#ifndef UI_CORE_WINDOWBUILDER_H_
#define UI_CORE_WINDOWBUILDER_H_
#pragma once
namespace ui
{
class Box;
class Window;
typedef std::function<Control* (const std::wstring&)> CreateControlCallback;
class UILIB_API WindowBuilder
{
public:
WindowBuilder();
Box* Create(STRINGorID xml, CreateControlCallback pCallback = CreateControlCallback(),
Window* pManager = nullptr, Box* pParent = nullptr, Box* pUserDefinedBox = nullptr);
Box* Create(CreateControlCallback pCallback = CreateControlCallback(), Window* pManager = nullptr,
Box* pParent = nullptr, Box* pUserDefinedBox = nullptr);
CMarkup* GetMarkup();
void GetLastErrorMessage(LPTSTR pstrMessage, SIZE_T cchMax) const;
void GetLastErrorLocation(LPTSTR pstrSource, SIZE_T cchMax) const;
private:
Control* _Parse(CMarkupNode* parent, Control* pParent = NULL, Window* pManager = NULL);
Control* CreateControlByClass(const std::wstring& strControlClass);
void AttachXmlEvent(bool bBubbled, CMarkupNode& node, Control* pParent);
private:
CMarkup m_xml;
CreateControlCallback m_createControlCallback;
};
} // namespace ui
#endif // UI_CORE_WINDOWBUILDER_H_