热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MFC动态生成控件并放于子容器groupbox,如何为其设置处理事件?

看各位前辈的代码,如果将动态生成的控件放在当前dialog类中,可以设置事件,但如果放在dialog里面的子容器比如groupbox,事件就失效了,BEGIN_MESSAGE
    看各位前辈的代码, 如果将动态生成的控件放在当前dialog类中,可以设置事件, 但如果放在dialog里面的子容器比如group box, 事件就失效了, 

BEGIN_MESSAGE_MAP(Cbms_setupDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_COMMAND_RANGE(C_BTN_LINE_ID, C_BTN_LINE_ID + 99, &Cbms_setupDlg::OnLineItemClick)
ON_CONTROL_RANGE(BN_CLICKED,C_BTN_AREA_ID, C_BTN_AREA_ID + 2, &Cbms_setupDlg::OnAreaItemClick)
ON_BN_CLICKED(IDCANCEL, &Cbms_setupDlg::OnBnClickedCancel)
END_MESSAGE_MAP()
...
size_t lvnBtnCount = lvvsAreas.size();
mAreaBtns = new CButton[lvnBtnCount];
DWORD dwStyle = WS_CHILD | WS_VISIBLE | BS_COMMANDLINK;
string * lvlpsAreas = &lvvsAreas[0];
for (size_t i = 0; i < lvnBtnCount; i++) {
wstring lvsTitle = freestyle::StrUtils::s2ws(lvlpsAreas[i]);
mAreaBtns[i].Create(lvsTitle.data(), dwStyle, CRect(20 + 250 * i, 30, 180 + 250 * i, 70), &cmgArea, C_BTN_AREA_ID + i);
 + i);

}

如上代码,如果将parent的this换成cmgArea (group box), 事件就失效了, 应该是BEGIN_MESSAGE_MAP这里要额外处理的, 不知道怎么办?

12 个解决方案

#1


我也每及具体做过。
不过建议你在百度搜“MFC 动态生成控件 消息映射 事件处理”

#2


每及→没

#3


引用 1 楼 zhao4zhong1 的回复:
我也每及具体做过。
不过建议你在百度搜“MFC 动态生成控件 消息映射 事件处理”


不会吧? 我就是找了很久,资料都没涉及到具体应用, 理应用容器将其装起来是最常用的...

#4


据我所知,groupbox里面不是通常放RadioButton或CheckBox吗?

#5


 不必 “将parent的this换成cmgArea (group box)”

#6


控件的事件一般传递给其父窗口, 如果你把父窗口指向的是Group控件,自然应该由Group控件处理

#7


引用 6 楼 zgl7903 的回复:
控件的事件一般传递给其父窗口, 如果你把父窗口指向的是Group控件,自然应该由Group控件处理


但是我想用group box将动态生成的控件分组管理 , 如果不将this换成groupbox的类变量, 还有什么好的办法?

#8


引用 5 楼 schlafenhamster 的回复:
 不必 “将parent的this换成cmgArea (group box)”

如果我想用group box将动态控件分组管理, 一般应该怎么处理呢?

#9


引用 4 楼 zhao4zhong1 的回复:
据我所知,groupbox里面不是通常放RadioButton或CheckBox吗?


一样的了, radiobutton/checkbox被安置于groupbox里面应该也不能接受消息的, 现在苦恼的是不知道怎么写那个消息映射.
昨晚睡觉前突然想起要不看看自动生成的代码是怎样的, 今天起床就在dialog里面拉了一个group box , 然后试图再拉一个button到group box里面, 但是怎么弄button的parent还是这个dialog .
刚从delphi转到vc不久, 这个真是比较难适应....

#10


简单一点的操作, 不要动态创建, 在资源编辑器中编辑好,布局比较容易掌控

#11


引用 10 楼 zgl7903 的回复:
简单一点的操作, 不要动态创建, 在资源编辑器中编辑好,布局比较容易掌控

button的内容及数量来自服务器...
而且,请问怎么将button/checkbox这些控件加入到group box容器里面?

#12


派生你的 groupbox (其实是 static)

推荐阅读
author-avatar
mobiledu2502891853
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有