/////////////////////////////////////////////////////////////////////////////
//
//	$Revision: 1 $
//
//	Name		:	XUIHelper.h
//
//	Purpose		:	Helper functions
//	
//	Written		:	cchow	07/2006
//
//	Description	:	Miscellaneous helper functions
//
/////////////////////////////////////////////////////////////////////////////
#pragma once

/////////////////////////////////////////////////////////////////////////////
//  Enumeration	:	E_SCREENLAYOUT
//
//  Description	:	Screen Layout definitions
//
/////////////////////////////////////////////////////////////////////////////
enum E_SCREENLAYOUT
{
	SCR_NORMAL,				// Normal layout, no restrictions
	SCR_PPC,				// PocketPC (240x320)
	SCR_PPC_LANDSCAPE,		// PocketPC Landscape (320x240)
};

class AFX_EXT_CLASS CXUIHelper
{

public:

	CXUIHelper();
	~CXUIHelper();

	////////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	IsPPCLayout
	//
	//   Description:	Determines if we are in the PocketPC (portrait) layout
	//
	//   Arguments  :	none
	//
	//   Returns:   :	true if PPC layout, false otherwise
	//
	//   Comments   :	none
	//
	////////////////////////////////////////////////////////////////////////////////
	static bool IsPPCLayout();

	////////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	GetScreenLayout
	//
	//   Description:	Determines the screen layout
	//
	//   Arguments  :	none
	//
	//   Returns:   :	Screen Layout enumeration
	//
	//   Comments   :	none
	//
	////////////////////////////////////////////////////////////////////////////////
	static E_SCREENLAYOUT GetScreenLayout();

	/////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	GetWorkingWindowRect
	//
	//   Description:	Returns the work area RECT of the specified window
	//
	//   Arguments  :	[in]hwnd		- handle of window
	//					[out]rect		- rect coordinates of work area
	//
	//   Returns:   :	none
	//
	//   Comments   :	rect is not guaranteed to be positive (for multiple
	//					monitors)
	//
	/////////////////////////////////////////////////////////////////////////////
	static void GetWorkingWindowRect(HWND hwnd, LPRECT rect);

#ifndef UNDER_CE
	/////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	BoldRichEditText
	//
	//   Description:	Bolds text in a richedit control
	//
	//   Arguments  :	[in]pEditCtrl	- rich edit control
	//					[in]szDelim		- delimiter enclosing text to bold
	//
	//   Returns:   :	none
	//
	//   Comments   :	Text to be bolded must be enclosed in a pair of
	//					arbitrary delimiters
	//
	/////////////////////////////////////////////////////////////////////////////
	static void BoldRichEditText(CRichEditCtrl* pEditCtrl, LPCTSTR szDelim);
#endif // UNDER_CE

	////////////////////////////////////////////////////////////////////////////////
	//
	//   Function   :	IsApplicationThemed
	//
	//   Description:	Determines whether the application has themed UI (ComCtl32.dll v6.0+)
	//
	//   Arguments  :	none
	//
	//   Returns:   :	True if the app. UI is themed
	//
	//   Comments   :	Can return true on XP / WinServer 2003 / Vista when themes are
	//                  enabled and the app. has appropriate manifest (embeded or external)
	//
	////////////////////////////////////////////////////////////////////////////////
	static bool IsApplicationThemed();
};
