//在MFC中实现程序退出提示
//testmfcDlg.cpp
void CTestmfcDlg::OnCancel()
{
// TODO: Add extra cleanup here
if (IDOK==AfxMessageBox(_T("真的要退出程序
吗?"),MB_OKCANCEL|MB_ICONWARNING|MB_DEFBUTTON2))
{
CDialog::OnCancel();
}
}
===========
//求和运算
void CTestmfcDlg::OnOK()
{
// TODO: Add extra validation here
//更新数据A
UpdateData(TRUE);
//获取数字B
CString strB;
//获得字符串长度
int nLen=m_ctlNumB.GetWindowTextLength();
//如果字符串长度为0,表明为空,提示输入值
if(nLen<=0)
{
AfxMessageBox(_T("请输入值B!"));//_T是让你的程序支持
Unicode编码
return;
}
//获得整数B
m_ctlNumB.GetWindowText(strB);
int iB;
iB=atoi(strB);
//计算结果
int n=m_iNumA+iB;
//显示计算信息和计算结果
CString strMsg;
strMsg.Format(_T("[%d]和[%d]的和为[%d]!"),m_iNumA,iB,n);
AfxMessageBox(strMsg);
}
============
//不充许输入字母
BOOL cNumEdit::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base
class
//截获键盘消息
if(pMsg->message==WM_KEYDOWN)
{
int nKey=(int)pMsg->wParam;
if((nKey>='0' && nKey<='9') || (nKey>='96' &&
nkey<='105')) //主键盘0-9,小键盘0-9
{
}
else if(nKey==189) //‘减号’
{
int s,e;
s=0,e=0;
//获得当前空间上的光标的选中区域
this->GetSel(s,e);
CString strText;
this->GetWindowText(strText);
if(strText.Find(_T('_')!=-1))
//当前已经包含减号了,最多一个减号
return true;
//当前还没有输入减号,那仅最前允许减号,否则拦
截
if(s!=0)
{
//返回True表示消息已被处理,不需要被进
一步处理,消息被拦截
retureturn true;
}
}
else
{
return true;
}
}
return CEdit::PreTranslateMessage(pMsg);
}
========
class CTestmfcDlg : public CDialog
{
// Construction
public:
cNumEdit m_ctlNumB;