#ifndef WIN_IMPL_BASE_HPP #define WIN_IMPL_BASE_HPP namespace DuiLib { enum UILIB_RESOURCETYPE { UILIB_FILE=1, // 来自磁盘文件 UILIB_ZIP, // 来自磁盘zip压缩包 UILIB_RESOURCE, // 来自资源 UILIB_ZIPRESOURCE, // 来自资源的zip压缩包 }; class UILIB_API WindowImplBase : public CWindowWnd , public CNotifyPump , public INotifyUI , public IMessageFilterUI , public IDialogBuilderCallback { public: WindowImplBase(); virtual ~WindowImplBase(){}; virtual void InitWindow(){}; virtual void OnFinalMessage( HWND hWnd ); virtual void Notify(TNotifyUI& msg); //------------------------add--------------------------- UINT DoModal (HWND hParent = nullptr); template ControlTy_* const FindControl (LPCTSTR lpstrName) { auto pControl = m_PaintManager.FindControl( lpstrName ); //assert( nullptr != pControl ); return reinterpret_cast(pControl); }; #define DUI_OBJ(obj_name) auto obj_name = WindowImplBase::FindControl(L#obj_name) #define DUI_OBJ_EXT(obj_name,obj_type) auto obj_name = WindowImplBase::FindControl(L#obj_name) #define DECLARE_DUI_FILE(_dir,_xml,_unused) \ public: \ DuiLib::CDuiString GetSkinFolder () {return L#_dir;}; \ DuiLib::CDuiString GetSkinFile () {return L#_xml;}; #define DECLARE_DUI_ZIP(_dir,_xml,_zip) \ public: \ DuiLib::CDuiString GetSkinFolder () {return L#_dir;}; \ DuiLib::CDuiString GetSkinFile () {return L#_xml;}; \ DuiLib::CDuiString GetZIPFileName () const{return L#_zip;}; \ UILIB_RESOURCETYPE GetResourceType() const{return UILIB_FILE;}; #define DECLARE_DUI_SKIN(_dir,_xml,_zip) \ public: \ DuiLib::CDuiString GetSkinFolder () {return _dir;}; \ DuiLib::CDuiString GetSkinFile () {return L#_xml;}; \ DuiLib::CDuiString GetZIPFileName () const{return L#_zip;}; \ UILIB_RESOURCETYPE GetResourceType() const{return UILIB_FILE;}; //#ifdef _DEBUG //#define DELCARE_DUI_RES DECLARE_DUI_FILE //#else //#define DECLARE_DUI_RES DECLARE_DUI_ZIP //#endif //----------------------------end---------------------------------; DUI_DECLARE_MESSAGE_MAP() virtual void OnClick(TNotifyUI& msg); protected: virtual CDuiString GetSkinFolder () = 0; virtual CDuiString GetSkinFile () = 0; //virtual LPCTSTR GetWindowClassName(void) const = 0; virtual LPCTSTR GetWindowClassName () const; virtual LRESULT ResponseDefaultKeyEvent(WPARAM wParam); CPaintManagerUI m_PaintManager; static LPBYTE m_lpResourceZIPBuffer; public: virtual UINT GetClassStyle() const; virtual UILIB_RESOURCETYPE GetResourceType() const; virtual CDuiString GetZIPFileName() const; virtual LPCTSTR GetResourceID() const; virtual CControlUI* CreateControl(LPCTSTR pstrClass); virtual LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM /*lParam*/, bool& /*bHandled*/); virtual LRESULT OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); #if defined(WIN32) && !defined(UNDER_CE) virtual LRESULT OnNcActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnNcCalcSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnNcPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/); virtual LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnMouseWheel(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnMouseHover(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); #endif virtual LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnChar(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LRESULT OnKeyDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnKillFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnLButtonDown(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnLButtonUp(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT OnMouseMove(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled); virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); virtual LRESULT HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); virtual LONG GetStyle(); }; } #endif // WIN_IMPL_BASE_HPP