创建多个按钮响应同一个函数
添加
BEGIN_MESSAGE_MAP(CDialogDlg, CDialog)
//{{AFX_MSG_MAP(CDialogDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
{ WM_COMMAND, BN_CLICKED, (WORD)100, (WORD)200, AfxSig_vv,(AFX_PMSG)&OnButton2 },
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
{ WM_COMMAND, BN_CLICKED, (WORD)100, (WORD)200, AfxSig_vv,(AFX_PMSG)&OnButton2 },
WM_COMMAND :表示控件消息
BN_CLICKED: 表示单击消息
first Word:表示起始id
end word:表示结束id
AFXSIG_VV :V 表示返回值为void ,v表示接收参数为空
最后一个为处理函数
动态添加按钮
void CDialogDlg::OnButton1()
{
// TODO: Add your control notification handler code here
static UINT uID = 100;
CButton *p = new CButton;
CRect rect(0,(uID-100)*50+10,100,(uID-100)*50+10 +50);
p->Create("aaaa",BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE,rect,this,uID++);
list.AddTail(p);
}
响应函数
void CDialogDlg::OnButton2()
{
// TODO: Add your control notification handler code here
MessageBox("ok2");
}
析构函数,删除资源
CDialogDlg::~CDialogDlg()
{
CButton *p = NULL;
while(!list.IsEmpty())
{
p = list.GetTail();
list.RemoveTail();
p->DestroyWindow();
p=NULL;
}
}
- [wukong] 这是钱林松老师的课件摘录的,讲的比这还详细 03/07 19:40
- [wukong] 只是方便用户,对象可以向基本类型那样,进行+-等运算。 03/07 19:38
- [chinatree] 不懂,什么书讲这么详细? 03/07 11:20
- [chinatree] 重载不是相同函数只是参数不同吗?运算符怎么重载?作用是什么? 03/07 11:13
- [tomato] c++的基本思想和java基本差不多,只是有一些细节的差别。 03/05 20:33
- [tomato] 我不是什么老师,只是一个搞技术的程序员。 03/05 20:32
- [tomato] 支持你! 03/04 23:07
- [wukong] 是的,一定努力,多动手,谢谢!!! 03/04 22:52
- [tomato] 明白了C++中的构造函数和析构函数,谢谢博主的这篇博文。嘿嘿。 03/04 22:30
- [tomato] 开始学习C++了?不仅要学习知识还要实验才行。 03/04 22:26