/* * Host */ #ifndef DUI_CORE_HOST_H_INCLUDED #define DUI_CORE_HOST_H_INCLUDED #pragma once #include "duielement.h" namespace DirectUI { //////////////////////////////////////////////////////// // HWNDElement #define HWEM_FLUSHWORKINGSET WM_USER class HWNDElement : public Element { public: static HRESULT Create(OUT Element** ppElement); // Required for ClassInfo (always fails) static HRESULT Create(HWND hParent, bool fDblBuffer, UINT nCreate, OUT Element** ppElement); virtual void OnPropertyChanged(PropertyInfo* ppi, int iIndex, Value* pvOld, Value* pvNew); virtual void OnGroupChanged(int fGroups, bool bLowPri); virtual void OnDestroy(); virtual void OnEvent(Event* pEvent); virtual void OnInput(InputEvent* pInput); virtual bool CanSetFocus() {return true;} Element* ElementFromPoint(POINT* ppt); static LRESULT CALLBACK StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); virtual LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void FlushWorkingSet(); // Async HWND GetHWND() { return _hWnd; } Element* GetKeyFocusedElement(); void ShowUIState(bool fUpdateAccel, bool fUpdateFocus); WORD GetUIState() { return _wUIState; } bool ShowAccel() { return !(GetUIState() & UISF_HIDEACCEL); } bool ShowFocus() { return !(GetUIState() & UISF_HIDEFOCUS); } void SetParentSizeControl(bool bParentSizeControl) {_bParentSizeControl = bParentSizeControl;} void SetScreenCenter(bool bScreenCenter) {_bScreenCenter = bScreenCenter;} // Property definitions static PropertyInfo* WrapKeyboardNavigateProp; // Quick property accessors bool GetWrapKeyboardNavigate() DUIQuickGetter(bool, GetBool(), WrapKeyboardNavigate, Specified) HRESULT SetWrapKeyboardNavigate(bool v) DUIQuickSetter(CreateBool(v), WrapKeyboardNavigate) // ClassInfo accessors (static and virtual instance-based) static IClassInfo* Class; virtual IClassInfo* GetClassInfo() { return Class; } static HRESULT Register(); /////////////////////////////////////////////////////// // Accessibility support virtual HRESULT GetAccessibleImpl(IAccessible ** ppAccessible); HWNDElement() {_bParentSizeControl = false; _bScreenCenter = false;} virtual ~HWNDElement() { } HRESULT Initialize(HWND hParent, bool fDblBuffer, UINT nCreate); protected: HWND _hWnd; HPALETTE _hPal; bool _bParentSizeControl; bool _bScreenCenter; WORD _wUIState; }; } // namespace DirectUI #endif // DUI_CORE_HOST_H_INCLUDED