从CMFCPropertyGridProperty派生新类,实现点击时显示下拉列表

class CMFCPropertyGridPropertyCB : public CMFCPropertyGridProperty
{
// Construction
public:
  CMFCPropertyGridPropertyCB(const CString& strName, const COleVariant& varValue, LPCTSTR lpszDescr)
    : CMFCPropertyGridProperty(strName, varValue, lpszDescr)
  {
  }

public:  
  virtual BOOL OnEdit(LPPOINT lptClick)
  {
    //取按钮中心
    // 目的是让 CMFCPropertyGridCtrl::OnLButtonDown 中 
    //  ClickValue 事件处理中的 if(pHit->m_rectButton.PtInRect(point)) 条件满足
    //  进而使 pHit->OnClickButton(point) 得以执行
    //  OnClickButton 中ComboBox控件 显示下拉列表
    // 详细的见源码 afxpropertygridctrl.cpp
    *lptClick = m_rectButton.CenterPoint();

    return __super::OnEdit(lptClick);
  }
  virtual void OnCloseCombo()
  {
    __super::OnCloseCombo();

    //下拉列表关闭后结束编辑
    OnEndEdit();
  }
};

 

//应用示例
//用应用相当生成MFC单文档或多文档(高级功能中选择属性窗口)
//这段示例截取了其中的部分,将CMFCPropertyGridProperty换成了CMFCPropertyGridPropertyCB类
//完整的代码 可自行用向导生成查看 
{
  //CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty
  CMFCPropertyGridProperty* pProp = new CMFCPropertyGridPropertyCB  
    (_T("边框"), _T("Dialog Frame"), _T("其中之一: 无(None)、细(Thin)、可调整大小(Resizable)、对话框外框(Dialog Frame)"));
  pProp->AddOption(_T("None"));
  pProp->AddOption(_T("Thin"));
  pProp->AddOption(_T("Resizable"));
  pProp->AddOption(_T("Dialog Frame"));
  pProp->AllowEdit(FALSE);

  pGroup1->AddSubItem(pProp);
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值