在VC++.NET中屏蔽Enter与ESC的关闭窗口功能

 
这是因为对话框接收到return时会自动响应OnOK(),而接到esc时会自动响应OnCancel()。

要解决这种问题:

1.将该对话框的所有按钮的Default Button属性设为false;

2. 重写该对话框的OnOk函数,然后将其中的CDialog::OnOK();语句删掉或注释掉。

3.重写该对话框的OnCancel函数,然后将其中的CDialog::Cancel();语句删掉或注释掉。



至此为此已经屏蔽掉了对话框的Enter与ESC默认的关闭窗口功能,以下就是利用某个按钮来实现OnOK()与OnCancel()函数的功能:

1. 为指定按钮添加处理函数,函数名要改一下,比如OnOkFun(),加上CDialog::OnOK();语句;

2.为指定按钮添加处理函数,函数名要改一下,比如OnCancelFun(),加上CDialog::OnCancel();语句;

注:以后点击OK按理执行的是这个函数,若有其它工作要做, 要加到刚才自定义的两个函数中来。而原先的IDOK按钮的处理函数将不再起作用。

代码如下:
void CLogin::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
OnOkFun();
}


void CLogin::OnOK()
{
// TODO: 在此添加专用代码和/或调用基类

//CDialog::OnOK();
}

void CLogin::OnOkFun(void)
{
CDialog::OnOK();
}

void CLogin::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
OnCancelFun();
}

void CLogin::OnCancelFun(void)
{
CDialog::OnCancel();
}

void CLogin::OnCancel()
{
// TODO: 在此添加专用代码和/或调用基类

//CDialog::OnCancel();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值