请教高手一个关于CMFCPropertyGridCtrl消息处理的问题
问题是这样的:
程序是SDI程,主视为MainView, 在MainView中动态添加CMFCTabCtrl(m_wndTab), 再在CMFCTabCtrl中的某个Tab中动态添加CMFCPropertyGridCtrl(m_wndPropGrid).
在CMFCPropertyGridCtrl中显示都很正常。现在的问题是,如果改变CMFCPropertyGridCtrl中的某一项内容里,我想做进一步的处理,需要处理CMFCPropertyGridCtrl的OnPropertyChanged事件。这个OnPropertyChanged事件的处理应该在CMFCPropertyGridCtrl的父窗体中添加OnPropertyChanged事件,问题是它的父窗体是CMFCTabCtrl是动态生成的。我试过在MainView中添加OnPropertyChanged事件,没反应,根本就没有进去。
还请高手们帮忙解达,在此先谢谢了。
部分代码:
在MainView的类定义部分(MainView.h):
CMFCTabCtrl m_wndTab;
CMFCPropertyGridCtrl m_wndPropList;
在MainView的实现部分 (MainView.cpp):
1. 在int CMainView::OnCreate(LPCREATESTRUCT lpCreateStruct)中
m_wndTab.Create (CMFCTabCtrl::STYLE_3D, rectTab, this, 1888, CMFCTabCtrl::LOCATION_TOP);
if (!m_wndPropList.Create(WS_CHILD | WS_VISIBLE |WS_BORDER, CRect (0, 0, 0, 0), &m_wndTab, 1234))
{
TRACE0("Failed to create Properties Grid \n");
return -1; // fail to create
}
m_wndTab.AddTab (&m_wndPropList, _T(" Properties "), 0, FALSE);
2. 消息映射
BEGIN_MESSAGE_MAP(CMainView, CFormView)
ON_WM_CREATE()
ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED, OnPropertyChanged)
END_MESSAGE_MAP()
3. 处理
LRESULT CMainDisplayView::OnPropertyChanged( WPARAM wParam,LPARAM lParam)
{
AfxMessageBox(_T("Property Changed")); //? 根本就没有进来
return 0;
}
分不够再给
程序是SDI程,主视为MainView, 在MainView中动态添加CMFCTabCtrl(m_wndTab), 再在CMFCTabCtrl中的某个Tab中动态添加CMFCPropertyGridCtrl(m_wndPropGrid).
在CMFCPropertyGridCtrl中显示都很正常。现在的问题是,如果改变CMFCPropertyGridCtrl中的某一项内容里,我想做进一步的处理,需要处理CMFCPropertyGridCtrl的OnPropertyChanged事件。这个OnPropertyChanged事件的处理应该在CMFCPropertyGridCtrl的父窗体中添加OnPropertyChanged事件,问题是它的父窗体是CMFCTabCtrl是动态生成的。我试过在MainView中添加OnPropertyChanged事件,没反应,根本就没有进去。
还请高手们帮忙解达,在此先谢谢了。
部分代码:
在MainView的类定义部分(MainView.h):
CMFCTabCtrl m_wndTab;
CMFCPropertyGridCtrl m_wndPropList;
在MainView的实现部分 (MainView.cpp):
1. 在int CMainView::OnCreate(LPCREATESTRUCT lpCreateStruct)中
m_wndTab.Create (CMFCTabCtrl::STYLE_3D, rectTab, this, 1888, CMFCTabCtrl::LOCATION_TOP);
if (!m_wndPropList.Create(WS_CHILD | WS_VISIBLE |WS_BORDER, CRect (0, 0, 0, 0), &m_wndTab, 1234))
{
TRACE0("Failed to create Properties Grid \n");
return -1; // fail to create
}
m_wndTab.AddTab (&m_wndPropList, _T(" Properties "), 0, FALSE);
2. 消息映射
BEGIN_MESSAGE_MAP(CMainView, CFormView)
ON_WM_CREATE()
ON_REGISTERED_MESSAGE(AFX_WM_PROPERTY_CHANGED, OnPropertyChanged)
END_MESSAGE_MAP()
3. 处理
LRESULT CMainDisplayView::OnPropertyChanged( WPARAM wParam,LPARAM lParam)
{
AfxMessageBox(_T("Property Changed")); //? 根本就没有进来
return 0;
}
分不够再给
...全文
相关推荐
CMFCPropertygridCtrl添加checkbox复选框
CMFCPropertygridCtrl不支持复选框,只好自己重载了CMFCPropertyGridProperty类,网上资料非常少,几乎找不到。 够折腾了,实现了添加复选框,替代TRUE/FALSE
CMFCPropertyGridCtrl使用
CMFCPropertyGridCtrl使用
C++ 关于 CMFCPropertyGridCtrl 的使用方法
题外话: 最近在写一个重要的程序,想做的更灵活一些,于是想采用属于对话框的形式,如图所示 但查了好几本大部门的C++及MFC的书,还有很多的网上的资料,这方面的介绍实在是少之又少。不过,好在VS2013是半开源的。哈哈,里抽的代码看不到,但是函数声明还是都能看到的。这为我解决问题提供了一条好的方法 ,另外在线的 MSDN 也是一个很好的学习途径,不过,汉语翻译实在是不敢恭维,那叫一个烂,基本上看不懂,他说的是什么,只能啃英文。 所以说,学东西不容易,学会了,一定不要忘记总结,要不然,过段时间就忘记了,就很可惜了。 不说废话,言归正转 一、关于 CMFCPropertyGridCtrl 与
C++, CMFCPropertyGridCtrl控件使用,读写Access数据库
对话框类的代码,包含了CMFCPropertyGridCtrl、CAdodc、Catagrid的使用
MFC vc++ 指针时钟 闹钟,非常好用。
MFC vc++ 指针时钟 闹钟,非常好用。 模拟机械表的运行。


