求助CMFCPropertyGridProperty获得事件的响应

luoxuecanjian 2010-05-27 01:40:12
一个属性对话框.在大小哪里有三个选项None, Thin, Resizable, Dialog Frame。代码如下
CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("外观"));

CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty(_T("边框"), _T("Dialog Frame"), _T("对话框外框"));
pProp->AddOption(_T("None"));
pProp->AddOption(_T("Thin"));
pProp->AddOption(_T("Resizable"));
pProp->AddOption(_T("Dialog Frame"));
pProp->AllowEdit(FALSE);


pGroup1->AddSubItem(pProp);

弹出这个界面后。如果我选择Thin那么就弹出一个afxMssageBox提示我选择了Thin要怎么去做。我不知道如何去获取这个事件响应。当我选择的时候如何获取到现在选择的事件。然后对这个事件进行处理。要如何去做?
...全文
876 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
qw1124968843 2012-10-30
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

添加一个继承自CMFCPropertyGridProperty的新类,并替换原来CMFCPropertyGridProperty的成员变量;然后用VS提供的属性窗口可以添加 消息事件操作
我想这样能解决问题、、、
[/Quote]

可是派生的子类的构造函数怎么写呢
Ians_Huyu 2012-07-05
  • 打赏
  • 举报
回复
遇着这种情况能不能多说两句?你觉得已经够详细了就能阻止1楼继续向你发问吗?[Quote=引用 3 楼 的回复:]

已经够详细了.
[/Quote]
cem_uestc 2012-07-03
  • 打赏
  • 举报
回复
如何判断是那项的响应?
Ians_Huyu 2012-07-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

已经够详细了.
[/Quote]臭装逼的
qq361301276 2011-06-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zfrog 的回复:]
在它所属的CPropertiesWnd的消息表里面添加
ON_REGISTERED_MESSAGE( AFX_WM_PROPERTY_CHANGED, OnPropertyChanged )
消息响应函数声明为
LRESULT CPropertiesWnd::OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam );
这个函数里面……
[/Quote]

很有用~~~
向立天 2010-06-04
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
shenzi 2010-05-27
  • 打赏
  • 举报
回复
不对 是继承自CMFCPropertyGridCtrl得新类
shenzi 2010-05-27
  • 打赏
  • 举报
回复
添加一个继承自CMFCPropertyGridProperty的新类,并替换原来CMFCPropertyGridProperty的成员变量;然后用VS提供的属性窗口可以添加 消息事件操作
我想这样能解决问题、、、
luoxuecanjian 2010-05-27
  • 打赏
  • 举报
回复
LS有QQ吗?
zfrog 2010-05-27
  • 打赏
  • 举报
回复
补充一下 函数最后面加return( 0 );

记得结贴 - -
zfrog 2010-05-27
  • 打赏
  • 举报
回复
//.h
LRESULT CPropertiesWnd::OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam );
//.cpp
LRESULT CPropertiesWnd::OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam )
{
AfxMessageBox(_T("change"));
}
试试

这也是我在国外的论坛上找到的资料,我用的没问题
luoxuecanjian 2010-05-27
  • 打赏
  • 举报
回复
嗯。我就是不晓得怎么会这样。。老报错。。才看了两天MFC老大就让做这个。。头疼。。
向立天 2010-05-27
  • 打赏
  • 举报
回复
比较奇怪
luoxuecanjian 2010-05-27
  • 打赏
  • 举报
回复
afx_msg void OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam ); .h里面这样定义的。然后到了cpp里面
BEGIN_MESSAGE_MAP(CPropertiesWnd, CDockablePane)
ON_WM_CREATE()
ON_WM_SIZE()
ON_COMMAND(ID_EXPAND_ALL, OnExpandAllProperties)
ON_UPDATE_COMMAND_UI(ID_EXPAND_ALL, OnUpdateExpandAllProperties)
ON_COMMAND(ID_SORTPROPERTIES, OnSortProperties)
ON_UPDATE_COMMAND_UI(ID_SORTPROPERTIES, OnUpdateSortProperties)
ON_COMMAND(ID_PROPERTIES1, OnProperties1)
ON_UPDATE_COMMAND_UI(ID_PROPERTIES1, OnUpdateProperties1)
ON_COMMAND(ID_PROPERTIES2, OnProperties2)
ON_UPDATE_COMMAND_UI(ID_PROPERTIES2, OnUpdateProperties2)
ON_WM_SETFOCUS()
ON_WM_SETTINGCHANGE()
ON_REGISTERED_MESSAGE( AFX_WM_PROPERTY_CHANGED, OnPropertyChanged )
END_MESSAGE_MAP()
加入了事件响应。然后
void CPropertiesWnd::OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam )
{
AfxMessageBox(_T("change"));
}
luoxuecanjian 2010-05-27
  • 打赏
  • 举报
回复
定义过了的啊
向立天 2010-05-27
  • 打赏
  • 举报
回复
OnPropertyChanged
这个函数你要定义啊
luoxuecanjian 2010-05-27
  • 打赏
  • 举报
回复
。。可还是没看懂。。。加入ON_REGISTERED_MESSAGE( AFX_WM_PROPERTY_CHANGED, OnPropertyChanged )
这个的时候报错。错误信息 error C2065: “OnPropertyChanged”: 未声明的标识符
不说害怕 2010-05-27
  • 打赏
  • 举报
回复
已经够详细了.
luoxuecanjian 2010-05-27
  • 打赏
  • 举报
回复
2L说的不是很懂。能不能说详细点?
zfrog 2010-05-27
  • 打赏
  • 举报
回复
在它所属的CPropertiesWnd的消息表里面添加
ON_REGISTERED_MESSAGE( AFX_WM_PROPERTY_CHANGED, OnPropertyChanged )
消息响应函数声明为
LRESULT CPropertiesWnd::OnPropertyChanged(__in WPARAM wparam, __in LPARAM lparam );
这个函数里面的第2个参数就是发生改变的CMFCPropertyGridProperty的指针:
CMFCPropertyGridProperty * pProperty = ( CMFCPropertyGridProperty * ) lparam;

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧