MFC 的问题,求大神指导

begodliker 2013-05-15 09:30:04
用MFC建立一个对话框,对话框中包含很多表示产品名称的按钮(大约100多个),每次我单击其中的一个按钮,就会弹出一个子对话框,显示该按钮对应的产品的详细信息。
请问,如果我不想一个一个的为这些按钮添加单击的处理事件的话,应该如何实现:使得单击其中的任一按钮时,就会显示出对应的产品信息
本人新手,请大神们多多指教
...全文
164 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton)
	ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton)
	ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton)
	ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton)
	ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton)
	ON_BN_CLICKED(IDC_BUTTON6, OnBnClickedButton)
....
把所有的button的click消息都映射到OnBnClickedButton这个上面
libingbing5210 2013-05-16
  • 打赏
  • 举报
回复
这个我也回复你下,你说的这个貌似很简单啊!自己写按钮类,继承创建下,那么事件处理什么的不就简单了。
draculamx 2013-05-16
  • 打赏
  • 举报
回复
7楼是对的,类似于控件数组,这方法我经常用
csd1208 2013-05-16
  • 打赏
  • 举报
回复
引用 7 楼 starytx 的回复:
1首先你得按钮ID需要是连续的, 2消息映射中(BEGIN_MESSAGE_MAP(xxx, xxx)中)写 ON_COMMAND_RANGE(IDC_BUTTON1 ,IDC_BUTTON2 ,OnClickButton) // 假如你有2个按钮,第一个是第一个按钮的ID,第二个是最后一个按钮的ID,OnClickButton就是处理函数,定义原型是 void fun(UINT nID) 3 添加消息处理函数 // 按钮单击消息处理函数 void Cxxx::OnClickButton(UINT nID) { switch (nID) { case IDC_BUTTON1: MessageBox("按下了按钮1"); break; case IDC_BUTTON2: MessageBox("按下了按钮2"); break; } return ; } 4 注意要屏蔽掉按钮之前映射的单击消息处理函数

	ON_COMMAND_RANGE(IDC_BUTTON1,IDC_BUTTON10 ,&COnCommandRangeDlg::OnBnClickedButton1)

void COnCommandRangeDlg::OnBnClickedButton1(UINT uID)
{
	// TODO: 在此添加控件通知处理程序代码
	AfxMessageBox("OK....");
}
这个方法 是可行的
buyong 2013-05-16
  • 打赏
  • 举报
回复
if you have 100 buttons. why not use a database
starytx 2013-05-16
  • 打赏
  • 举报
回复
1首先你得按钮ID需要是连续的, 2消息映射中(BEGIN_MESSAGE_MAP(xxx, xxx)中)写 ON_COMMAND_RANGE(IDC_BUTTON1 ,IDC_BUTTON2 ,OnClickButton) // 假如你有2个按钮,第一个是第一个按钮的ID,第二个是最后一个按钮的ID,OnClickButton就是处理函数,定义原型是 void fun(UINT nID) 3 添加消息处理函数 // 按钮单击消息处理函数 void Cxxx::OnClickButton(UINT nID) { switch (nID) { case IDC_BUTTON1: MessageBox("按下了按钮1"); break; case IDC_BUTTON2: MessageBox("按下了按钮2"); break; } return ; } 4 注意要屏蔽掉按钮之前映射的单击消息处理函数
ri_aje 2013-05-16
  • 打赏
  • 举报
回复
ON_MESSAGE/WM_LBUTTONDOWN 我记得是宏,把他们复制并批量修改一下就完成映射了,可以全部映射到一个函数,在函数内再分派,如果处理逻辑一样的话,比如都是显示对话框,只不过信息不同,则最后基本就是数组操作了。
赵4老师 2013-05-16
  • 打赏
  • 举报
回复
Code Generation技术帖主听说过吗?
漫步者、 2013-05-15
  • 打赏
  • 举报
回复
这个是可以绑定到一个按钮的消息上的,
nirvana_newbie 2013-05-15
  • 打赏
  • 举报
回复
引用 2 楼 begodliker 的回复:
[quote=引用 1 楼 nirvana_newbie 的回复:] 1)new MFC project 2)add 100 buttons on the dialog 3)design a function for product informations show 4)when you click the button,the button calls the function
那我还是得为这100个按钮都添加WM_LBUTTONDOWN的事件处理程序啊,是这样吗?[/quote] 似乎是,需要绑定处理事件。我都没写过MFC程序,只知道JS可以动态绑定按钮事件,不知道MFC是否可以。
begodliker 2013-05-15
  • 打赏
  • 举报
回复
引用 1 楼 nirvana_newbie 的回复:
1)new MFC project 2)add 100 buttons on the dialog 3)design a function for product informations show 4)when you click the button,the button calls the function
那我还是得为这100个按钮都添加WM_LBUTTONDOWN的事件处理程序啊,是这样吗?
nirvana_newbie 2013-05-15
  • 打赏
  • 举报
回复
1)new MFC project 2)add 100 buttons on the dialog 3)design a function for product informations show 4)when you click the button,the button calls the function

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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