// XTVC50Helpers.h : Visual C++ 5.0 helpers
//
// This file is a part of the XTREME CONTROLS MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTVC50HELPERS_H__)
#define __XTVC50HELPERS_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// ---------------------------------------------------------------------
// Summary:
// The CXTListViewHelper class is a helper class that provides
// helper functions for finding selected items for the MFC
// CListView class.
// See Also:
// GetFirstSelectedItemPosition, GetNextSelectedItem
// ---------------------------------------------------------------------
class _XTP_EXT_CLASS CXTListViewHelper : public CListView
{
public:
// ------------------------------------------------------------------------
// Summary:
// Gets the position of the first selected item in the list view
// control.
// Returns:
// A POSITION value that can be used for iteration or object
// pointer retrieval; NULL if no items are selected.
// Example:
// The following example demonstrates how to use GetFirstSelectedItemPosition.
//
// CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
// ASSERT(pListCtrl != NULL);
//
// POSITION pos = pList-\>GetFirstSelectedItemPosition();
// if (pos == NULL)
// TRACE0("No items were selected!\\n");
// else
// {
// while (pos)
// {
// int nItem = pList-\>GetNextSelectedItem(pos);
// TRACE1("Item %d was selected!\\n", nItem);
// // you could do your own processing on nItem here
// }
// }
//
// See Also:
// GetNextSelectedItem
// ------------------------------------------------------------------------
POSITION GetFirstSelectedItemPosition() const;
// ---------------------------------------------------------------------------------------------
// Summary:
// Gets the index of the list item identified by pos, then sets pos
// to the POSITION value.
// Parameters:
// pos - A reference to a POSITION value returned by a previous
// call to GetNextSelectedItem or GetFirstSelectedItemPosition.
// The value is updated to the next position by this call.
// Returns:
// The index of the list item identified by pos.
// Remarks:
// You can use GetNextSelectedItem in a forward iteration loop
// if you establish the initial position with a call to GetFirstSelectedItemPosition.
//
// You must ensure that your POSITION value is valid. If it is
// invalid, then the Debug version of the Microsoft Foundation Class
// Library asserts.
// Example:
// The following example demonstrates how to use GetNextSelectedItem.
//
// CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
// ASSERT(pListCtrl != NULL);
//
// POSITION pos = pList-\>GetFirstSelectedItemPosition();
// if (pos == NULL)
// TRACE0("No items were selected!\\n");
// else
// {
// while (pos)
// {
// int nItem = pList-\>GetNextSelectedItem(pos);
// TRACE1("Item %d was selected!\\n", nItem);
// // you could do your own processing on nItem here
// }
// }
//
// See Also:
// GetFirstSelectedItemPosition
// ---------------------------------------------------------------------------------------------
int GetNextSelectedItem(POSITION& pos) const;
};
//{{AFX_CODEJOCK_PRIVATE
#if (_MSC_VER >= 1200) // Using Visual C++ 6.0 or later.
//}}AFX_CODEJOCK_PRIVATE
// ---------------------------------------------------------------------
// Summary:
// Helper macro used for compatibility with Visual C++ 5.0, Visual C++ 6.0
// and later should use CString.
// ---------------------------------------------------------------------
#define CXTStringHelper CString
// ---------------------------------------------------------------------
// Summary:
// Helper macro used for compatibility with Visual C++ 5.0, Visual C++ 6.0
// and later should use CHeaderCtrl.
// ---------------------------------------------------------------------
#define CXTHeaderCtrlHelper CHeaderCtrl
// ---------------------------------------------------------------------
// Summary:
// Helper macro used for compatibility with Visual C++ 5.0, Visual C++ 6.0
// and later should use CListCtrl.
// ---------------------------------------------------------------------
#define CXTListCtrlHelper CListCtrl
//{{AFX_CODEJOCK_PRIVATE
#else // Using Visual C++ 5.0
// ------------------------------------------------------------------------
// Summary:
// The CXTHeaderCtrlHelper class is a helper class that is used
// with Visual C++ 5.0 to provide compatibility with later versions
// \of Visual C++. For Visual C++ 6.0 and later CXTHeaderCtrlHelper
// is defined as CHeaderCtrl.
// ------------------------------------------------------------------------
class _XTP_EXT_CLASS CXTHeaderCtrlHelper : public CHeaderCtrl
{
protected:
// ----------------------------------------------------------------
// Summary:
// Retrieves a count of the items in a header control.
// Returns:
// Number of header control items if successful; otherwise -1.
// ----------------------------------------------------------------
virtual int GetItemCount() const;
// ---------------------------------------------------------------------------
// Summary:
// Retrieves the left-to-right order of items in a header control.
// Parameters:
// piArray - A pointer to the address of a buffer that receives the index
// values of the items in the header control, in the order in
// which they appear from left to right.
// iCount - A pointer to the address of a buffer that receives the index
// values of the items in the header control, in the order in
// which they appear from left to right.
// Returns:
// Nonzero if successful; otherwise 0.
// Remarks:
// This member function implements the behavior of the Win32 message
// HDM_GETORDERARRAY, as described in the Platform SDK. It is
// provided to support header item ordering.
// Example:
// The following example demonstrates how to use GetOrderArray.
//
// // The pointer to my header control.
// extern CHeaderCtrl* pmyHeaderCtrl;
//
// // Reverse the order of the items in the header control.
// // (i.e. make the first item the last one, the last item
// // the first one, and so on ...).
// int nCount = pmyHeaderCtrl-\>GetItemCount();
// LPINT pnOrder = (LPINT) malloc(nCount*sizeof(int));
// ASSERT(pnOrder != NULL);
//
// pmyHeaderCtrl-\>GetOrderArray(pnOrder, nCount);
//
// int i, j, nTemp;
// for (i = 0, j = nCount-1;i \< j;i++, j--)
// {
// nTemp = pnOrder[i];
// pnOrder[i] = pnOrder[j];
// pnOrder[j] = nTemp;
// }
//
// pmyHeaderCtrl-\>SetOrderArray(nCount, pnOrder);
// free(pnOrder);
//
// ---------------------------------------------------------------------------
virtual BOOL GetOrderArray(LPINT piArray, int iCount = -1);
// -----------------------------------------------------------------------
// Summary:
// Retrieves the bounding rectangle for a given item in a header control.
// Parameters:
// nIndex - The zero-based index of the header control item.
// lpRect - A pointer to the address of aRECT structure that receives the bounding rectangle information.
// Returns:
// Nonzero if successful; otherwise 0.
// Remarks:
// This member function implements the behavior of the Win32 message
// HDM_GETITEMRECT, as described in the Platform SDK.
// -----------------------------------------------------------------------
virtual BOOL GetItemRect(int nIndex, LPRECT lpRect) const;
};
// ----------------------------------------------------------------------
// Summary:
// The CXTListCtrlHelper class is a helper class that is used
// with Visual C++ 5.0 to provide compatibility with later versions
// \of Visual C++. For Visual C++ 6.0 and later CXTListCtrlHelper
// is defined as CListCtrl.
// ----------------------------------------------------------------------
class _XTP_EXT_CLASS CXTListCtrlHelper : public CListCtrl
{
public:
// ------------------------------------------------------------------------
// Summary:
// Gets the position of the first selected item in the list view
// control.
// Returns:
// A POSITION value that can be used for iteration or object
// pointer retrieval; NULL if no items are selected.
// Example:
// The following example demonstrates how to use GetFirstSelectedItemPosition.
//
// CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
// ASSERT(pListCtrl != NULL);
//
// POSITION pos = pList-\>GetFirstSelectedItemPosition();
// if (pos == NULL)
// TRACE0("No items were selected!\\n");
// else
// {
// while (pos)
// {
// int nItem = pList-\>GetNextSelectedItem(pos);
// TRACE1("Item %d was selected!\\n", nItem);
// // you could do your own processing on nItem here
// }
// }
//
// See Also:
// GetNextSelectedItem
// ------------------------------------------------------------------------
POSITION GetFirstSelectedItemPosition() const;
// ---------------------------------------------------------------------------------------------
// Summary:
// Gets the index of the list item identified by pos, then sets pos
// to the POSITION value.
// Parameters:
// pos - A reference to a POSITION value returned by a previous
// call to GetNextSelectedItem or GetFirstSelectedItemPosition.
// The value is updated to the next position by this call.
// Returns:
// The index of the list item identified by pos.
// Remarks:
// You can use GetNextSelectedItem in a forward iteration loop
// if you establish the initial position with a call to GetFirstSelectedItemPosition.
//
// You must ensure that your POSITION value is valid. If it is
// invalid, then the Debug version of the Microsoft Foundation Class
// Library asserts.
// Example:
// The following example demonstrates how to use GetNextSelectedItem.
//
// CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
// ASSERT(pListCtrl != NULL);
//
// POSITION pos = pList-\>GetFirstSelectedItemPosition();
// if (pos == NULL)
// TRACE0("No items were selected!\\n");
// else
// {
// while (pos)
// {
// int nItem = pList-\>GetNextSelectedItem(pos);
// TRACE1("Item %d was selected!\\n", nItem);
// // you could do your own processing on nItem here
// }
// }
//
// See Also:
// GetFirstSelectedItemPosition
// ---------------------------------------------------------------------------------------------
int GetNextSelectedItem(POSITION& pos) const;
};
// ---------------------------------------------------------------------
// Summary:
// The CXTStringHelper class is a helper class that is used with
// Visual C++ 5.0 to provide compatibility with later versions of
// Visual C++. For Visual C++ 6.0 and later CXTStringHelper is
// defined as CString.
// ---------------------------------------------------------------------
class _XTP_EXT_CLASS CXTStringHelper : public CString
{
public:
// -------------------------------------------------------------------------------------------
// Summary:
// Constructs a CXTStringHelper object.
// Parameters:
// strIn - An existing CXTStringHelper object to be copied into this
// CXTStringHelper object.
// Remarks:
// Because the constructors copy the input data into new allocated
// storage, you should be aware that memory exceptions may result.
// \Note that some of these constructors act as conversion functions.
// This allows you to substitute, for example, an LPTSTR where
// a CXTStringHelper object is expected.
// Example:
// The following example demonstrates the use of CXTStringHelper::CXTStringHelper.
//
// CString s1; // Empty string
// CString s2("cat"); // From a C string literal
// CString s3 = s2; // Copy constructor
// CString s4(s2 + " " + s3); // From a string expression
//
// -------------------------------------------------------------------------------------------
CXTStringHelper();
CXTStringHelper(CString strIn); //
// ----------------------------------------------------------------------------
// Summary:
// Searches this string for the first match of a character or
// substring.
// Parameters:
// lpszSub - A substring to search for..
// nStart - The index of the character in the string to begin the
// search with, or 0 to start from the beginning.
// ch - A single character to search for.
// Returns:
// The zero-based index of the first character in this CXTStringHelper
// \object that matches the requested substring or characters; -1 if
// the substring or character is not found.
// Remarks:
// The function is overloaded to accept both single characters
// (similar to the run-time function strchr) and strings
// (similar to strstr).
// Example:
// The following example demonstrates the use of CXTStringHelper::Find.
//
// CXTStringHelper s("abcdef");
// _ASSERT(s.Find('c') == 2);
// _ASSERT(s.Find("de") == 3);
//
// CXTStringHelper str("The waves are still");
// int n = str.Find('e', 5);
// _ASSERT(n == 7);
//
// ----------------------------------------------------------------------------
int Find(TCHAR ch) const;
int Find(LPCTSTR lpszSub) const; //
int Find(LPCTSTR lpszSub, int nStart) const; //
// --------------------------------------------------------------------------------
// Summary:
// Inserts a single character or a substring at the given index
// within the string.
// Parameters:
// nIndex - The index of the character before which the insertion will
// take place.
// pstr - A pointer to the substring to be inserted.
// ch - The character to be inserted.
// Returns:
// The length of the changed string.
// Remarks:
// The nIndex parameter identifies the first character that
// will be moved to make room for the character or substring. If nIndex
// is zero, the insertion will occur before the entire string. If nIndex
// is higher than the length of the string, the function will
// concatenate the present string and the new material provided by
// either ch or psz.
// Example:
// The following example demonstrates the use of CXTStringHelper::Find.
//
// CXTStringHelper str("SoccerBest");
// int n = str.Insert(6, "is ");
// _ASSERT(n == str.GetLength());
// printf("1: %sn", (LPCTSTR) str);
//
// n = str.Insert(6, ' ');
// _ASSERT(n == str.GetLength());
// printf("2: %sn", (LPCTSTR) str);
//
// n = str.Insert(55, '!');
// _ASSERT(n == str.GetLength());
// printf("3: %sn", (LPCTSTR) str);
//
//
// Output
//
// 1: Soccer is Best
//
// 2: Soccer is Best
//
// 3: Soccer is Best!
// --------------------------------------------------------------------------------
int Insert(int nIndex, TCHAR ch);
int Insert(int nIndex, LPCTSTR pstr); //
// ---------------------------------------------------------------------------------
// Summary:
// The CXTStringHelper assignment (=) operator reinitialize's an
// existing CXTStringHelper object with new data.
// Parameters:
// stringSrc - A CString to be copied into this CString
// object.
// ch - A single character.
// psz - A null\-terminated string to be copied into this CXTStringHelper
// object.
// lpsz - A null\-terminated string to be copied into this CXTStringHelper
// object.
// Remarks:
// If the destination string (that is, the left side) is already
// large enough to store the new data, no new memory allocation is
// performed. You should be aware that memory exceptions may occur
// whenever you use the assignment operator because new storage is
// \often allocated to hold the resulting CXTStringHelper object.
// Example:
// The following example demonstrates the use of CXTStringHelper::operator
// =.
//
// CXTStringHelper s1, s2; // Empty CXTStringHelper objects
//
// s1 = "cat"; // s1 = "cat"
// s2 = s1; // s1 and s2 each = "cat"
// s1 = "the " + s1; // Or expressions
// s1 = 'x'; // Or just individual characters
//
// ---------------------------------------------------------------------------------
const CString& operator=(TCHAR ch);
const CString& operator=(LPCSTR lpsz); //
const CString& operator=(LPCWSTR lpsz); //
const CString& operator=(const CString& stringSrc); //
const CString& operator=(const unsigned char* psz); //
// ------------------------------------------------------------------------------
// Summary:
// Removes instances of the specified character from the string.
// Parameters:
// chRemove - The character to be removed from a string.
// Returns:
// The count of characters removed from the string. Zero if the
// string is not changed.
// Remarks:
// Comparisons for the character are case sensitive.
// Example:
// The following example demonstrates the use of CXTStringHelper::Remove.
//
// CXTStringHelper str("This is a test.");
// int n = str.Remove('t');
// _ASSERT(n == 2);
// _ASSERT(str == "This is a es.");
//
// ------------------------------------------------------------------------------
int Remove(TCHAR chRemove);
// ----------------------------------------------------------------------------------
// Summary:
// Replaces a character or substring with another.
// Parameters:
// lpszOld - A pointer to a string containing the character to be
// replaced by pszNew.
// lpszNew - A pointer to a string containing the character replacing pszOld.
// chOld - The character to be replaced by chNew.
// chNew - The character replacing chOld.
// Returns:
// The number of replaced instances of the character or substring.
// Zero if the string is not changed.
// Remarks:
// This function replaces instances of the specified character or
// substring with instances of the new character or substring. The
// string may grow or shrink as a result of the replacement; that is,
// lpszNew and lpszOld do not have to be equal in
// length. The function performs a case-sensitive match.
// Example:
// The following example demonstrates the use of CXTStringHelper::Replace.
//
// CXTStringHelper strBang(_T("Everybody likes field hockey"));
// int n = strBang.Replace(_T("field hockey"), _T("soccer"));
// _ASSERT(n == 1);
//
// ----------------------------------------------------------------------------------
int Replace(TCHAR chOld, TCHAR chNew);
int Replace(LPCTSTR lpszOld, LPCTSTR lpszNew); //
// -------------------------------------------------------------------------------------
// Summary:
// Deletes a character or characters from a string starting with the
// character at the given index.
// Parameters:
// nIndex - The zero\-based index of the first character in the CXTStringHelper
// object to delete.
// nCount - The number of characters to be removed.
// Returns:
// The length of the changed string.
// Remarks:
// If nCount is longer than the string, the remainder of the string
// will be removed.
// Example:
// The following example demonstrates the use of CXTStringHelper::Delete.
//
// CXTStringHelper str("Soccer is best!");
// printf("Before: %s\\n", (LPCTSTR) str);
// int n = str.Delete(6, 3);
// printf("After: %s\\n", (LPCTSTR) str);
// _ASSERT(n == str.GetLength());
//
//
// Output
//
// Before: Soccer is best!
//
// After: Soccer best!
// -------------------------------------------------------------------------------------
int Delete(int nIndex, int nCount = 1);
// -------------------------------------------------------------------------------
// Summary:
// Extracts the first (that is, leftmost) nCount characters
// from this CXTStringHelper object and returns a copy of the
// extracted substring.
// Parameters:
// nCount - The number of characters to extract from this CXTStringHelper
// object.
// Returns:
// A CXTStringHelper object containing a copy of the specified
// range of characters. Note that the returned CXTStringHelper
// \object may be empty.
// Remarks:
// If nCount exceeds the string length, then the entire string
// is extracted. Left is similar to the Basic Left function
// (except that indexes in Basic are zero based). For multibyte
// character sets (MBCS), nCount refers to each 8-bit
// character; that is, a lead and trail byte in one multibyte
// character are counted as two characters.
// Example:
// The following example demonstrates the use of CXTStringHelper::Left.
//
// CXTStringHelper s(_T("abcdef"));
// _ASSERT(s.Left(2) == _T("ab"));
//
// -------------------------------------------------------------------------------
CXTStringHelper Left(int nCount) const;
};
#ifndef VERSION_WIN4
#define VERSION_WIN4 MAKELONG(0, 4)
#endif
#ifndef VERSION_IE401
#define VERSION_IE401 MAKELONG(72, 4)
#endif
#ifndef CBRS_GRIPPER
#define CBRS_GRIPPER 0x00400000L
#endif
#ifndef AFX_IDW_REBAR
#define AFX_IDW_REBAR 0xE804
#endif
#ifndef ID_VIEW_REBAR
#define ID_VIEW_REBAR 0xE804
#endif
#ifndef AFX_IDW_DIALOGBAR
#define AFX_IDW_DIALOGBAR 0xE805
#endif
#ifndef SPI_GETFLATMENU
#define SPI_GETFLATMENU 0x1022
#endif
#ifndef AFX_INLINE
#define AFX_INLINE inline
#endif
#ifndef AFX_STATIC
#define AFX_STATIC static
#endif
#endif
//}}AFX_CODEJOCK_PRIVATE
// ----------------------------------------------------------------------
// Summary:
// Enumeration to determine mouse state.
// Remarks:
// XTMouseState type defines the constants used to determine the
// state and position the mouse cursor is with relation to a
// control's window. This is used to determine how the control should
// be rendered.
// See Also:
// CXTFlatEdit::DrawEdit, CXTFlatComboBox::DrawCombo,
// CXTOutBarCtrl::DrawFolder
//
//
// ----------------------------------------------------------------------
enum XTMouseState
{
xtMouseNormal = 1, // The mouse cursor is not hovering.
xtMouseHover = 2, // The mouse cursor is hovering the control.
xtMouseSelect = 3 // The mouse cursor is hovering the control and the left button is pressed.
};
//////////////////////////////////////////////////////////////////////
#endif // #if !defined(__XTVC50HELPERS_H__)