MFC若干小问题解决方案(1)

一、在浮动面板中动态创建CButton之后,按钮初始状态变灰的问题

afx_msg void OnUpdateBtn(CCmdUI* pCmdUI);

ON_UPDATE_COMMAND_UI(IDC_BROWSER,  &ImageInfoView::OnUpdateBtn)

void ImageInfoView::OnUpdateBtn(CCmdUI* pCmdUI)   

{      
    pCmdUI->Enable(true);
}

二、CMFCPropertyGridCtrl控件滚动到指定位置

WPARAM wparam = MAKEWPARAM(SB_THUMBPOSITION, pos);    
pList.SendMessage(WM_VSCROLL, wparam, 0);

三、CMFCPropertyGridCtrl控件没有子属性点击事件

1、新建一个子类CMFCPropertyGridCtrlEX继承CMFCPropertyGridCtrl

2、声明和定义子属性点击事件的消息

extern UINT AFX_WM_PROPERTY_COMMAND_CLICKED;
UINT AFX_WM_PROPERTY_COMMAND_CLICKED = ::RegisterWindowMessage(_T("AFX_WM_PROPERTY_COMMAND_CLICKED"));

3、响应WM_LBUTTONUP消息

afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
ON_WM_LBUTTONUP()      
void CMFCPropertyGridCtrlEx::OnLButtonUp(UINT nFlags, CPoint point) 
{
     CMFCPropertyGridCtrl::OnLButtonUp(nFlags, point);
     CMFCPropertyGridProperty* pProp =  HitTest(point); 
     if (pProp)
     {
         GetOwner ()->SendMessage(AFX_WM_PROPERTY_COMMAND_CLICKED, GetDlgCtrlID (), LPARAM(pProp));
     }
}

4、然后就可以像AFX_WM_PROPERTY_CHANGED事件一样监听了

ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_COMMAND_CLICKED, &ImageInfoView::OnPropertyClicked)
LRESULT ImageInfoView::OnPropertyClicked(WPARAM wParam, LPARAM lParam)
{
     CMFCPropertyGridProperty* pProp = (CMFCPropertyGridProperty*)lParam;
     if (pProp)
     {
         //do something
     }
     return 0;
}
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值