Skip to content

Commit

Permalink
CGridListCtrlEx - define CGRIDLISTCTRLEX_AFX_EXT to compile as MFC Ex…
Browse files Browse the repository at this point in the history
…tension DLL
  • Loading branch information
snakefoot committed Apr 30, 2016
1 parent 292f4e2 commit 86a139a
Show file tree
Hide file tree
Showing 19 changed files with 354 additions and 83 deletions.
21 changes: 18 additions & 3 deletions CGridListCtrlEx/CGridColumnTrait.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,15 @@
// License: Free to use for all (New BSD License)
//------------------------------------------------------------------------

#ifdef CGRIDLISTCTRLEX_AFX_EXT
// Using MFC Extension DLL
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS AFX_EXT_CLASS
#undef AFX_DATA
#define AFX_DATA AFX_EXT_DATA
#else
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS
#endif

class CGridColumnTraitVisitor;
class CGridListCtrlEx;

Expand All @@ -15,7 +24,7 @@ class CGridListCtrlEx;
//------------------------------------------------------------------------
//! CGridColumnTrait specifies the methods needed for custom cell handling
//------------------------------------------------------------------------
class CGridColumnTrait
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridColumnTrait
{
public:
//! Destructor
Expand Down Expand Up @@ -107,7 +116,7 @@ class CGridColumnTrait
virtual bool IsCellReadOnly(CGridListCtrlEx& owner, int nRow, int nCol, CPoint pt) const { return !m_ColumnState.m_Editable; }

// Maintaining column visible state, etc.
struct ColumnState
struct CGRIDLISTCTRLEX_AFX_EXT_CLASS ColumnState
{
ColumnState()
: m_Visible(true)
Expand Down Expand Up @@ -152,4 +161,10 @@ class CGridColumnTrait
ColumnState m_ColumnState;
};

#pragma warning(pop)
#pragma warning(pop)

#ifdef CGRIDLISTCTRLEX_AFX_EXT
#undef AFX_DATA
#define AFX_DATA
#endif
#undef CGRIDLISTCTRLEX_AFX_EXT_CLASS
24 changes: 21 additions & 3 deletions CGridListCtrlEx/CGridColumnTraitCombo.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,22 @@

#include "CGridColumnTraitImage.h"

#ifdef CGRIDLISTCTRLEX_AFX_EXT
// Using MFC Extension DLL
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS AFX_EXT_CLASS
#undef AFX_DATA
#define AFX_DATA AFX_EXT_DATA
template class CGRIDLISTCTRLEX_AFX_EXT_CLASS CSimpleMap<DWORD_PTR, CString>;
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CEdit;
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CComboBox;
#else
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS
#endif

//------------------------------------------------------------------------
//! CGridColumnTraitCombo implements a CComboBox as cell-editor
//------------------------------------------------------------------------
class CGridColumnTraitCombo : public CGridColumnTraitImage
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridColumnTraitCombo : public CGridColumnTraitImage
{
public:
CGridColumnTraitCombo();
Expand Down Expand Up @@ -59,7 +71,7 @@ class CGridColumnTraitCombo : public CGridColumnTraitImage
// Taken from "MFC Grid control" credits Chris Maunder
// http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
//------------------------------------------------------------------------
class CGridEditorComboBoxEdit : public CEdit
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridEditorComboBoxEdit : public CEdit
{
DECLARE_DYNAMIC(CGridEditorComboBoxEdit)

Expand All @@ -82,7 +94,7 @@ class CGridEditorComboBoxEdit : public CEdit
// Taken from "MFC Grid control" credits Chris Maunder
// http://www.codeproject.com/KB/miscctrl/gridctrl.aspx
//------------------------------------------------------------------------
class CGridEditorComboBox : public CComboBox
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridEditorComboBox : public CComboBox
{
DECLARE_DYNAMIC(CGridEditorComboBox)

Expand Down Expand Up @@ -120,3 +132,9 @@ class CGridEditorComboBox : public CComboBox
CGridEditorComboBox(const CGridEditorComboBox&);
CGridEditorComboBox& operator=(const CGridEditorComboBox&);
};

#ifdef CGRIDLISTCTRLEX_AFX_EXT
#undef AFX_DATA
#define AFX_DATA
#endif
#undef CGRIDLISTCTRLEX_AFX_EXT_CLASS
22 changes: 19 additions & 3 deletions CGridListCtrlEx/CGridColumnTraitDateTime.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,20 @@

#include "CGridColumnTraitImage.h"

#ifdef CGRIDLISTCTRLEX_AFX_EXT
// Using MFC Extension DLL
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS AFX_EXT_CLASS
#undef AFX_DATA
#define AFX_DATA AFX_EXT_DATA
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CDateTimeCtrl;
#else
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS
#endif

//------------------------------------------------------------------------
//! CGridColumnTraitDateTime implements a CDateTimeCtrl as cell-editor
//------------------------------------------------------------------------
class CGridColumnTraitDateTime : public CGridColumnTraitImage
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridColumnTraitDateTime : public CGridColumnTraitImage
{
public:
CGridColumnTraitDateTime();
Expand Down Expand Up @@ -43,7 +53,7 @@ class CGridColumnTraitDateTime : public CGridColumnTraitImage
//------------------------------------------------------------------------
//! CDateTimeCtrl for inplace edit. For internal use by CGridColumnTraitDateTime
//------------------------------------------------------------------------
class CGridEditorDateTimeCtrl : public CDateTimeCtrl
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridEditorDateTimeCtrl : public CDateTimeCtrl
{
DECLARE_DYNAMIC(CGridEditorDateTimeCtrl)

Expand Down Expand Up @@ -73,4 +83,10 @@ class CGridEditorDateTimeCtrl : public CDateTimeCtrl
private:
CGridEditorDateTimeCtrl(const CGridEditorDateTimeCtrl&);
CGridEditorDateTimeCtrl& operator=(const CGridEditorDateTimeCtrl&);
};
};

#ifdef CGRIDLISTCTRLEX_AFX_EXT
#undef AFX_DATA
#define AFX_DATA
#endif
#undef CGRIDLISTCTRLEX_AFX_EXT_CLASS
22 changes: 19 additions & 3 deletions CGridListCtrlEx/CGridColumnTraitEdit.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,22 @@

#include "CGridColumnTraitImage.h"

#ifdef CGRIDLISTCTRLEX_AFX_EXT
// Using MFC Extension DLL
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS AFX_EXT_CLASS
#undef AFX_DATA
#define AFX_DATA AFX_EXT_DATA
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CEdit;
#else
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS
#endif

class CGridEditorText;

//------------------------------------------------------------------------
//! CGridColumnTraitEdit implements a CEdit as cell-editor
//------------------------------------------------------------------------
class CGridColumnTraitEdit : public CGridColumnTraitImage
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridColumnTraitEdit : public CGridColumnTraitImage
{
public:
CGridColumnTraitEdit();
Expand All @@ -38,7 +48,7 @@ class CGridColumnTraitEdit : public CGridColumnTraitImage
//------------------------------------------------------------------------
//! CEdit for inplace edit. For internal use by CGridColumnTraitEdit
//------------------------------------------------------------------------
class CGridEditorText : public CEdit
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridEditorText : public CEdit
{
DECLARE_DYNAMIC(CGridEditorText)

Expand All @@ -65,4 +75,10 @@ class CGridEditorText : public CEdit
CGridEditorText();
CGridEditorText(const CGridEditorText&);
CGridEditorText& operator=(const CGridEditorText&);
};
};

#ifdef CGRIDLISTCTRLEX_AFX_EXT
#undef AFX_DATA
#define AFX_DATA
#endif
#undef CGRIDLISTCTRLEX_AFX_EXT_CLASS
19 changes: 17 additions & 2 deletions CGridListCtrlEx/CGridColumnTraitHyperLink.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@

#include "CGridColumnTraitImage.h"

#ifdef CGRIDLISTCTRLEX_AFX_EXT
// Using MFC Extension DLL
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS AFX_EXT_CLASS
#undef AFX_DATA
#define AFX_DATA AFX_EXT_DATA
#else
#define CGRIDLISTCTRLEX_AFX_EXT_CLASS
#endif

//------------------------------------------------------------------------
//! CGridColumnTraitHyperLink that can launch a link using the web-browser
//------------------------------------------------------------------------
class CGridColumnTraitHyperLink : public CGridColumnTraitImage
class CGRIDLISTCTRLEX_AFX_EXT_CLASS CGridColumnTraitHyperLink : public CGridColumnTraitImage
{
public:
CGridColumnTraitHyperLink();
Expand Down Expand Up @@ -54,4 +63,10 @@ class CGridColumnTraitHyperLink : public CGridColumnTraitImage
CString m_ShellFilePrefix; //!< ShellExecute file specifier prefix
CString m_ShellFileSuffix; //!< ShellExecute file specifier suffix
INT m_ShellShowCommand; //!< ShellExecute show application flags (Ex. SW_SHOWNORMAL)
};
};

#ifdef CGRIDLISTCTRLEX_AFX_EXT
#undef AFX_DATA
#define AFX_DATA
#endif
#undef CGRIDLISTCTRLEX_AFX_EXT_CLASS
49 changes: 28 additions & 21 deletions CGridListCtrlEx/CGridColumnTraitImage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@ bool CGridColumnTraitImage::GetIconClickBeginEdit() const
//------------------------------------------------------------------------
void CGridColumnTraitImage::AddImageIndex(int nImageIdx)
{
m_ImageIndexes.Add(nImageIdx, ImageCell());
m_ImageCellText.Add(nImageIdx, CString());
m_ImageCellEdit.Add(nImageIdx, true);
}

//------------------------------------------------------------------------
Expand All @@ -143,7 +144,8 @@ void CGridColumnTraitImage::AddImageIndex(int nImageIdx)
//------------------------------------------------------------------------
void CGridColumnTraitImage::AddImageIndex(int nImageIdx, const CString& strImageText, bool bEditable)
{
m_ImageIndexes.Add(nImageIdx, ImageCell(strImageText, bEditable));
m_ImageCellText.Add(nImageIdx, strImageText);
m_ImageCellEdit.Add(nImageIdx, bEditable);
}

//------------------------------------------------------------------------
Expand All @@ -155,11 +157,16 @@ void CGridColumnTraitImage::AddImageIndex(int nImageIdx, const CString& strImage
//------------------------------------------------------------------------
void CGridColumnTraitImage::SetImageText(int nImageIdx, const CString& strImageText, bool bEditable)
{
int nIndex = m_ImageIndexes.FindKey(nImageIdx);
int nIndex = m_ImageCellText.FindKey(nImageIdx);
if (nIndex == -1)
{
AddImageIndex(nImageIdx, strImageText, bEditable);
}
else
m_ImageIndexes.GetValueAt(nIndex) = ImageCell(strImageText, bEditable);
{
m_ImageCellText.GetValueAt(nIndex) = strImageText;
m_ImageCellEdit.GetValueAt(nIndex) = bEditable;
}
}

//------------------------------------------------------------------------
Expand Down Expand Up @@ -289,12 +296,12 @@ bool CGridColumnTraitImage::IsCellReadOnly(CGridListCtrlEx& owner, int nRow, int
return true;

// Check if current cell image blocks for starting cell editor
if (m_ImageIndexes.GetSize() != 0)
if (m_ImageCellEdit.GetSize() != 0)
{
int nCurImageIdx = -1;
for (int i = 0; i < m_ImageIndexes.GetSize(); ++i)
for (int i = 0; i < m_ImageCellEdit.GetSize(); ++i)
{
if (!m_ImageIndexes.GetValueAt(i).m_Editable)
if (!m_ImageCellEdit.GetValueAt(i))
{
if (nCurImageIdx == -1)
{
Expand All @@ -310,7 +317,7 @@ bool CGridColumnTraitImage::IsCellReadOnly(CGridListCtrlEx& owner, int nRow, int
if (nCurImageIdx == -1)
break;
}
if (nCurImageIdx == m_ImageIndexes.GetKeyAt(i))
if (nCurImageIdx == m_ImageCellEdit.GetKeyAt(i))
return true;
}
}
Expand Down Expand Up @@ -359,7 +366,7 @@ int CGridColumnTraitImage::OnClickEditStart(CGridListCtrlEx& owner, int nRow, in
}
}

if (m_ImageIndexes.GetSize()>1)
if (m_ImageCellEdit.GetSize()>1)
{
CRect iconRect;
if (owner.GetCellRect(nRow, nCol, LVIR_ICON, iconRect) && iconRect.PtInRect(pt))
Expand All @@ -380,14 +387,14 @@ int CGridColumnTraitImage::OnClickEditStart(CGridListCtrlEx& owner, int nRow, in
//------------------------------------------------------------------------
int CGridColumnTraitImage::FlipImageIndex(CGridListCtrlEx& owner, int nRow, int nCol)
{
if (m_ImageIndexes.GetSize() <= 1)
if (m_ImageCellText.GetSize() <= 1)
return -1;

int nImageIdx = owner.GetCellImage(nRow, nCol);
int nOldImagePos = -1;
for (int i = 0; i < m_ImageIndexes.GetSize(); ++i)
for (int i = 0; i < m_ImageCellText.GetSize(); ++i)
{
if (m_ImageIndexes.GetKeyAt(i) == nImageIdx)
if (m_ImageCellText.GetKeyAt(i) == nImageIdx)
{
nOldImagePos = i;
break;
Expand All @@ -397,10 +404,10 @@ int CGridColumnTraitImage::FlipImageIndex(CGridListCtrlEx& owner, int nRow, int
return -1;

int nNewImageIdx = -1;
if (nOldImagePos + 1 == m_ImageIndexes.GetSize())
nNewImageIdx = m_ImageIndexes.GetKeyAt(0);
if (nOldImagePos + 1 == m_ImageCellText.GetSize())
nNewImageIdx = m_ImageCellText.GetKeyAt(0);
else
nNewImageIdx = m_ImageIndexes.GetKeyAt(nOldImagePos + 1);
nNewImageIdx = m_ImageCellText.GetKeyAt(nOldImagePos + 1);

return nNewImageIdx;
}
Expand Down Expand Up @@ -450,7 +457,7 @@ CWnd* CGridColumnTraitImage::OnEditBegin(CGridListCtrlEx& owner, int nRow, int n
//------------------------------------------------------------------------
CWnd* CGridColumnTraitImage::OnEditBeginImage(CGridListCtrlEx& owner, int nRow, int nCol)
{
if (m_ImageIndexes.GetSize() <= 1)
if (m_ImageCellText.GetSize() <= 1)
{
// No images to flip between
if (m_IconClickBeginEdit)
Expand All @@ -465,12 +472,12 @@ CWnd* CGridColumnTraitImage::OnEditBeginImage(CGridListCtrlEx& owner, int nRow,
return NULL;

CString strOldImageText, strNewImageText;
for (int i = 0; i < m_ImageIndexes.GetSize(); ++i)
for (int i = 0; i < m_ImageCellText.GetSize(); ++i)
{
if (m_ImageIndexes.GetKeyAt(i) == nOldImageIdx)
strOldImageText = m_ImageIndexes.GetValueAt(i).m_CellText;
if (m_ImageIndexes.GetKeyAt(i) == nNewImageIdx)
strNewImageText = m_ImageIndexes.GetValueAt(i).m_CellText;
if (m_ImageCellText.GetKeyAt(i) == nOldImageIdx)
strOldImageText = m_ImageCellText.GetValueAt(i);
if (m_ImageCellText.GetKeyAt(i) == nNewImageIdx)
strNewImageText = m_ImageCellText.GetValueAt(i);
}

// Send Notification to parent of ListView ctrl
Expand Down
Loading

0 comments on commit 86a139a

Please sign in to comment.