如何区分CButton数组的回调中的索引?

时间:2012-03-27 18:00:52

标签: visual-c++ mfc

如何区分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");
}

1 个答案:

答案 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的方法。