如何区分Button数组的回调中的索引? THX
这将返回所有索引的messageBox,但无法区分哪个被按下。
ON_BN_CLICKED(100, ClickMe)
CButton *btnDelay = new CButton[4];
for(int i = 0; i < 4; i++){
(btnDelay+i) -> Create("0", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(350, 80+i*20, 450, 100+i*20), this,100);
}
void CCatsGenBDlg::ClickMe()
{
//How do I know which button was pressed ?
MessageBox("ClickMe");
}
答案 0 :(得分:1)
首先,当您创建按钮时,为每个按钮指定一个唯一的ID,例如
Create("0", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(350, 80+i*20, 450, 100+i*20), this,100+i);
这将为您提供100至103
的ID则...
BEGIN_MESSAGE_MAP(CtomDlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_COMMAND_RANGE(100, 103, OnButtonPressed) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CtomDlg::OnButtonPressed(UINT nID) { //Show message box }
ON_COMMAND_RANGE消息将处理按钮范围内的ID,并提供在事件处理程序中获取其特定ID的方法。