MFC窗口响应Enter/Esc

通常,我们知道:

按Esc    --〉调用 OnCancle

按Enter --〉调用 OnOK

 

那为什么会这样定位的呢?我们查一下 IDOK  IDCANCEL 的定义,在文件(winuser.h中)

/* * Dialog Box Command IDs */
#define IDOK                      1
#define IDCANCEL            2

而在父类CDialog中有映射:

ON_BN_CLICKED(IDOK, &CDialog::OnOK())

ON_BN_CLICKED(IDCANCLE, &CDialog::OnCancle())

 

而为什么Enter ,ESC触发了消息 1/2 (IDOK,IDCANCEL):

我个人看的话,是MFC做了封装,检查到Enter,就发1|IDOK消息, 检查到Cancel,就发2|IDCANCLE消息.

 

基于上面的判断,我们可以重新映射Enter/Esc响应,例如,定义:

// in resource.h

#define IDC_MYOK  1

#define IDC_MYCANCEL 2

添加映射:

// in DlgMy.cpp

ON_BN_CLICKED(ID_MYOK, &CDlgMy::OnMyOK())

ON_BN_CLICKED(ID_MYCANCLE, &CDlyMy::OnMyCancel())

 

这样,Enter时,就会响应到OnMyOK();   Esc时,就会响应到OnMyCancel();

 

 

 

 

 

 

你可能感兴趣的:(enter,ESC)