|
|
//
// cuiwnd.h
// = UI object library - define UIWindow class =
//
#ifndef CUIWND_H
#define CUIWND_H
#include "cuiobj.h"
#include "cuischem.h"
class CUIFToolTip; class CUIFShadow;
//
//
//
#define WND_DEF_X 200
#define WND_DEF_Y 200
#define WND_HEIGHT 200
#define WND_WIDTH 200
//
// CUIFWindow style
//
#define UIWINDOW_CHILDWND 0x00000001
#define UIWINDOW_TOPMOST 0x00000002
#define UIWINDOW_TOOLWINDOW 0x00000004
#define UIWINDOW_WSDLGFRAME 0x00000008
#define UIWINDOW_WSBORDER 0x00000010
#define UIWINDOW_HASTOOLTIP 0x00000020
#define UIWINDOW_HASSHADOW 0x00000040
#define UIWINDOW_HABITATINWORKAREA 0x00000080
#define UIWINDOW_HABITATINSCREEN 0x00000100
#define UIWINDOW_LAYOUTRTL 0x00000200
#define UIWINDOW_NOMOUSEMSGFROMSETCURSOR 0x00000400
#define UIWINDOW_OFC10MENU 0x10000000
#define UIWINDOW_OFC10TOOLBAR 0x20000000
#define UIWINDOW_OFC10WORKPANE 0x40000000
#define UIWINDOW_OFFICENEWLOOK 0x70000000 /* mask bit */
#define UIWINDOW_WHISTLERLOOK 0x80000000
//
// misc definition
//
#define WM_GETOBJECT 0x003D
//
// CUIFWindow
// = UI window class =
//
class CUIFWindow : public CUIFObject { public: CUIFWindow( HINSTANCE hInst, DWORD dwStyle ); virtual ~CUIFWindow( void );
//
// CUIFObject methods
//
virtual CUIFObject *Initialize( void ); virtual void PaintObject( HDC hDC, const RECT *prcUpdate ); virtual void RemoveUIObj( CUIFObject *pUIObj );
virtual void SetRect( const RECT *prc );
//
// window functions
//
virtual LPCTSTR GetClassName( void ); virtual LPCTSTR GetWndTitle( void ); virtual DWORD GetWndStyle( void ); virtual DWORD GetWndStyleEx( void ); virtual HWND CreateWnd( HWND hWndParent );
virtual void Show( BOOL fShow ); virtual void Move( int x, int y, int nWidth, int nHeight ); virtual BOOL AnimateWnd( DWORD dwTime, DWORD dwFlags );
//
// child object fucntions
//
void SetCaptureObject( CUIFObject *pUIObj ); void SetTimerObject( CUIFObject *pUIObj, UINT uElapse = 0 ); virtual void OnObjectMoved( CUIFObject *pUIObj ); virtual void OnMouseOutFromWindow( POINT pt ) {}
//
// message handling functions
//
virtual void OnCreate( HWND hwnd ) {} virtual void OnDestroy( HWND hwnd ) {} virtual void OnNCDestroy( HWND hwnd ) {} virtual void OnSetFocus( HWND hwnd ) {} virtual void OnKillFocus( HWND hwnd ) {} virtual void OnNotify( HWND hwnd, int nId, NMHDR *pmnh ) {} virtual void OnTimer( UINT uiTimerID ) {} virtual void OnSysColorChange( void ) {} virtual void OnEndSession(HWND hwnd, WPARAM wParam, LPARAM lParam) {} virtual void OnKeyDown(HWND hwnd, WPARAM wParam, LPARAM lParam) {} virtual void OnKeyUp(HWND hwnd, WPARAM wParam, LPARAM lParam) {} virtual void OnUser(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {} virtual LRESULT OnActivate(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT OnWindowPosChanged(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT OnWindowPosChanging(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT OnNotifyFormat(HWND hwnd, HWND hwndFrom, LPARAM lParam) { return 0; } virtual LRESULT OnShowWindow( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT OnSettingChange( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT OnDisplayChange( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT OnGetObject( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual LRESULT WindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); virtual LRESULT OnEraseBkGnd( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { return DefWindowProc(hWnd, uMsg, wParam, lParam); } virtual void OnThemeChanged(HWND hwnd, WPARAM wParam, LPARAM lParam);
//
// member accesss functions
//
__inline HWND GetWnd( void ) { return m_hWnd; }
__inline HINSTANCE GetInstance( void ) { return m_hInstance; }
__inline CUIFObject *GetCaptureObject( void ) { return m_pUIObjCapture; }
__inline CUIFObject *GetTimerObject( void ) { return m_pTimerUIObj; }
__inline CUIFToolTip *GetToolTipWnd( void ) { return m_pWndToolTip; }
__inline void ClearToolTipWnd() { m_pWndToolTip = NULL; }
__inline CUIFShadow *GetShadowWnd( void ) { return m_pWndShadow; }
__inline void ClearShadowWnd() { m_pWndShadow = NULL; }
__inline BOOL EnableShadow(BOOL fShadowOn) { BOOL bRet = m_fShadowEnabled; m_fShadowEnabled = fShadowOn; return bRet; }
__inline BOOL IsShadowEnabled() { return m_fShadowEnabled; }
//
// misc functions
//
virtual void UpdateUI(const RECT *prc = NULL) { if (IsWindow( m_hWnd )) { InvalidateRect( m_hWnd, prc, FALSE ); } }
__inline void UpdateWindow( void ) { if (IsWindow( m_hWnd )) { ::UpdateWindow( m_hWnd ); } }
virtual void SetCapture( BOOL fSet);
void SetBehindModal(CUIFWindow *pModalUIWnd); virtual void ModalMouseNotify( UINT uMsg, POINT pt) {};
__inline BOOL IsPointed(CUIFObject *pUIObj) { return (m_pUIObjPointed == pUIObj) ? TRUE : FALSE; }
virtual void OnAnimationStart( void ); virtual void OnAnimationEnd( void ); protected: int _xWnd; int _yWnd; int _nHeight; int _nWidth;
HINSTANCE m_hInstance; HWND m_hWnd; CUIFObject *m_pTimerUIObj; CUIFObject *m_pUIObjCapture; CUIFObject *m_pUIObjPointed; BOOL m_fCheckingMouse; CUIFWindow *m_pBehindModalUIWnd; CUIFToolTip *m_pWndToolTip; CUIFShadow *m_pWndShadow; BOOL m_fShadowEnabled;
void CreateScheme();
virtual void HandleMouseMsg( UINT uMsg, POINT pt ); void SetObjectPointed( CUIFObject *pUIobj, POINT pt ); virtual void ClientRectToWindowRect( RECT *prc ); virtual void GetWindowFrameSize( SIZE *psize ); static BOOL InitMonitorFunc(); BOOL GetWorkArea(RECT *prcIn, RECT *prcOut); void AdjustWindowPosition();
// static functions
static LRESULT CALLBACK WindowProcedure( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
static __inline void SetThis( HWND hWnd, CUIFWindow *pUIWindow ) { SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG_PTR)pUIWindow ); }
static __inline CUIFWindow *GetThis( HWND hWnd ) { CUIFWindow *pUIWindow = (CUIFWindow *)GetWindowLongPtr( hWnd, GWLP_USERDATA ); return pUIWindow; }
};
#endif /* CUIWND_H */
|