如题:
比如有两个button:
button1: id 为ID_BUTTON1
button1: id 为ID_BUTTON2
我在消息循环中加入
ON_BN_CLICKED(ID_BUTTON1, OnButton)
ON_BN_CLICKED(ID_BUTTON2, OnButton)按button1和button2都触发了OnButton(),
如果我要分辨出是那一个按钮出发OnButton()的,该如何做?
多谢指点!
比如有两个button:
button1: id 为ID_BUTTON1
button1: id 为ID_BUTTON2
我在消息循环中加入
ON_BN_CLICKED(ID_BUTTON1, OnButton)
ON_BN_CLICKED(ID_BUTTON2, OnButton)按button1和button2都触发了OnButton(),
如果我要分辨出是那一个按钮出发OnButton()的,该如何做?
多谢指点!
解决方案 »
- vc字符数组的比较,怎么写啊
- 我最近学习指针与结构体问题,请帮忙,我程序出错
- VC如何直接执行windows内部指令
- PostNcDestroy在无窗口的class中相当于什么???【在线等待,立即给分】非常感谢!
- 用MFC开发ActiveX控件,然后用一个已经存在的代码做成模板,可是用此模板生成的多份控件只能是最后注册的才能显示在控件栏里,为什么?如
- win2000下实现应用程序开机自启动?
- 初学者的初学问题
- 初学者遇到一个问题?请帮忙!
- 竟然出这种题目!!更可怕的是这是初一新生参加计算机兴趣班的第一个题目。
- <<Essential C++>>是本好书,不过是很失败的书!!
- 一个奇怪的网络问题
- CString类型问题,怪怪!
public sub dosomething(byref cmd as commandbutton)
select case cmd.name
case button1
....
case button2
....
end select
end sub
{
CWnd *pWnd = GetFocus();
int nID = pWnd->GetDlgCtrlID();
}
这样就可以获得button的ID号了。经过测试。
献丑了。
:)不过VC也可以通过同样的方法来作吧
{
}
else if(nID==IDC_BUTTON2)
{
}
一切OK!
你把所有按钮的ID值先改成连续值
比如IDC_BUTTON1 = 1001, IDC_BUTTON2 = 1002.. 以此类推.如果你是依次添加按钮的话,他们的值就是连续的, 你也可以直接修改include.h 文件使他们连续
然后只要在消息循环中加入:
ON_COMMAND_RANGE(IDC_BUTTON1, IDC_BUTTON2, OnButton)
就可以了 ON_BN_CLICKED(ID_BUTTON1, OnButton)
ON_BN_CLICKED(ID_BUTTON2, OnButton)
都不需要了
再将OnButton的定义改为; void OnButton(int nID);
这样每次调用OnButton时, nID就是那个被按的按钮的ID号
通常一系列的控件用楼上的方法很不错
if(pMSG->wParam == IDC_BUTTON1)
{
AfxMessageBox("111");
}
else if(pMSG->wParam == IDC_BUTTON2)
{
AfxMessageBox("222");
}
{
CWnd *pWnd = GetFocus();
int nID = pWnd->GetDlgCtrlID();
if(nID == IDC_BUTTON1)
{
}
else if(nID==IDC_BUTTON2)
{
}
}
一切ok了