关于CMFCPropertyGridProperty 选件类的使用
2014-11-18 14:02
393 查看
最近这段时间项目都是使用到CMFCPropertyGridProperty选件类。网上关于CMFCPropertyGridProperty 的创建已经有很多了,我今天说一些没有的,在项目中用到的知识
像CMFCPropertyGridFileProperty 和 CMFCPropertyGridFontProperty 类,都是自带有一个按钮的,但是有时候那个按钮太小了,想要调整又不知道如何调整。如果你仔细查看选件类的源代码。你就会发现,它是利用两个函数进行调整的。这个时候我们就要自己写一个类继承自你需要调整的类了。
class CMFCPropertyFile : public CMFCPropertyGridFileProperty
{
public:
CMFCPropertyFile(const CString& strName, BOOL bOpenFileDialog, const CString& strFileName, LPCTSTR lpszDefExt = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, LPCTSTR lpszDescr = NULL, DWORD_PTR dwData = 0);
virtual ~CMFCPropertyFile();
virtual void AdjustButtonRect();
virtual void OnDrawButton(CDC* pDC, CRect rect);
};
如上就是自己定义的类。使用起来和CMFCPropertyGridFileProperty是一样的。
CMFCPropertyFile::CMFCPropertyFile(const CString& strName, BOOL bOpenFileDialog, const CString& strFileName, LPCTSTR lpszDefExt ,
DWORD dwFlags , LPCTSTR lpszFilter , LPCTSTR lpszDescr, DWORD_PTR dwData)
:CMFCPropertyGridFileProperty(strName,bOpenFileDialog,strFileName,lpszDefExt,dwFlags,lpszFilter,lpszDescr,dwData)
{
}
CMFCPropertyFile::~CMFCPropertyFile()
{
}
// CMFCPropertyFile member functions
void CMFCPropertyFile::AdjustButtonRect()
{
ASSERT_VALID(this);
m_rectButton = m_Rect;
m_rectButton.left = m_rectButton.right - m_rectButton.Height() + 3;
m_rectButton.left -=10;
m_rectButton.top ++;
m_rectButton.top -=5;
}
// CMFCPropertyFont member functions
void CMFCPropertyFile::OnDrawButton(CDC* pDC, CRect rect)
{
ASSERT_VALID(this);
ASSERT_VALID(pDC);
ASSERT_VALID(m_pWndList);
CBrush m_brush(RGB(181,180,180));
pDC->FillRect(rect, &m_brush);
CString str = _T("...");
pDC->DrawText(str, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
这样就可以实现了按钮的重画。可以变大和改变颜色。
CMFCPropertyGridFontProperty的做法一样。因为CMFCPropertyGridFontProperty只有GetLogFont获取字体,现在我们可以自己定义SetLogFont往属性表里面填数据。
class CMFCPropertyFont : public CMFCPropertyGridFontProperty
{
public:
CMFCPropertyFont(CString strName, LOGFONT lf, DWORD dwFontDialogFlags, LPCTSTR lpszDescr, DWORD_PTR dwData, COLORREF color = (COLORREF)-1);
virtual ~CMFCPropertyFont();
public:
virtual void SetLogFont(LOGFONT lf){m_lf = lf;}
virtual void SetLogColor(COLORREF m_col){m_Color = m_col;}
virtual void AdjustButtonRect();
virtual void OnDrawButton(CDC* pDC, CRect rect);
};
希望对使用这个控件的同学有点帮助。
像CMFCPropertyGridFileProperty 和 CMFCPropertyGridFontProperty 类,都是自带有一个按钮的,但是有时候那个按钮太小了,想要调整又不知道如何调整。如果你仔细查看选件类的源代码。你就会发现,它是利用两个函数进行调整的。这个时候我们就要自己写一个类继承自你需要调整的类了。
class CMFCPropertyFile : public CMFCPropertyGridFileProperty
{
public:
CMFCPropertyFile(const CString& strName, BOOL bOpenFileDialog, const CString& strFileName, LPCTSTR lpszDefExt = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, LPCTSTR lpszDescr = NULL, DWORD_PTR dwData = 0);
virtual ~CMFCPropertyFile();
virtual void AdjustButtonRect();
virtual void OnDrawButton(CDC* pDC, CRect rect);
};
如上就是自己定义的类。使用起来和CMFCPropertyGridFileProperty是一样的。
CMFCPropertyFile::CMFCPropertyFile(const CString& strName, BOOL bOpenFileDialog, const CString& strFileName, LPCTSTR lpszDefExt ,
DWORD dwFlags , LPCTSTR lpszFilter , LPCTSTR lpszDescr, DWORD_PTR dwData)
:CMFCPropertyGridFileProperty(strName,bOpenFileDialog,strFileName,lpszDefExt,dwFlags,lpszFilter,lpszDescr,dwData)
{
}
CMFCPropertyFile::~CMFCPropertyFile()
{
}
// CMFCPropertyFile member functions
void CMFCPropertyFile::AdjustButtonRect()
{
ASSERT_VALID(this);
m_rectButton = m_Rect;
m_rectButton.left = m_rectButton.right - m_rectButton.Height() + 3;
m_rectButton.left -=10;
m_rectButton.top ++;
m_rectButton.top -=5;
}
// CMFCPropertyFont member functions
void CMFCPropertyFile::OnDrawButton(CDC* pDC, CRect rect)
{
ASSERT_VALID(this);
ASSERT_VALID(pDC);
ASSERT_VALID(m_pWndList);
CBrush m_brush(RGB(181,180,180));
pDC->FillRect(rect, &m_brush);
CString str = _T("...");
pDC->DrawText(str, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
这样就可以实现了按钮的重画。可以变大和改变颜色。
CMFCPropertyGridFontProperty的做法一样。因为CMFCPropertyGridFontProperty只有GetLogFont获取字体,现在我们可以自己定义SetLogFont往属性表里面填数据。
class CMFCPropertyFont : public CMFCPropertyGridFontProperty
{
public:
CMFCPropertyFont(CString strName, LOGFONT lf, DWORD dwFontDialogFlags, LPCTSTR lpszDescr, DWORD_PTR dwData, COLORREF color = (COLORREF)-1);
virtual ~CMFCPropertyFont();
public:
virtual void SetLogFont(LOGFONT lf){m_lf = lf;}
virtual void SetLogColor(COLORREF m_col){m_Color = m_col;}
virtual void AdjustButtonRect();
virtual void OnDrawButton(CDC* pDC, CRect rect);
};
希望对使用这个控件的同学有点帮助。
相关文章推荐
- 关于CMFCPropertyGridFontProperty的赋值问题
- C++ 关于 CMFCPropertyGridCtrl 的使用方法 之一 (原创)
- 使用月历控件CMonthCalCtrl让VC2010的CMFCPropertyGridProperty支持日期选择
- CMFCPropertyGridProperty的使用
- C++ 关于 CMFCPropertyGridCtrl 的使用方法 之二 (原创)
- C++ 关于 CMFCPropertyGridCtrl 的使用方法
- 使用CMFCPropertyGridCtrl及CMFCPropertyGridProperty控件的心得体会
- 关于使用@property @synthesize的语法
- 关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer
- 关于PropertyGrid的使用以及控件编写(转载微软的一片文章)
- CMFCPropertyGridProperty用法
- CMFCPropertySheet的使用及PROPSHEETHEADER结构体介绍
- 关于系统中使用多个PropertyPlaceholderConfigurer的配置
- 关于jsp中使用 <jsp:userBean/> <jsp:setProperty/> <jsp:getProperty/>
- 关于系统中使用多个PropertyPlaceholderConfigurer的配置
- CMFCPropertyGridCtrl的使用
- VS2008下使用 CMFCPropertyGridCtrl 转载
- CMFCPropertySheet的使用及PROPSHEETHEADER结构体介绍
- CMFCPropertyGrid Control的使用
- 关于PropertyGrid的使用几篇好文