编辑: 被控制998 2013-06-02

2 添加事件响应函数 OnsetfocusEdit2,方法同上 如下图 手把手教你 MFC 编程计算器 第17页/共23页 设置好之后,我们还要做一些初始化工作,在程序运行之初,我们先初始化 nEditFlag = 0;

那么在哪里初始化呢?很简单,正如大家想的一样在 OnInitDialog()内进行初始化 我们只需在 OnInitDialog()函数中 加入一句 nEditFlag = 0;

便可以了(如下图黑条字体部分) 手把手教你 MFC 编程计算器 第18页/共23页 / 之后我们再为两个事件响应函数进行 OnsetfocusEdit1()和OnsetfocusEdit2()添加 代码 手把手教你 MFC 编程计算器 第19页/共23页 当用户选定编辑框

1 的时候,nEditFlag = 1;

当用户选定编辑框

2 的时候,nEditFlag = 2;

而鼠标消息 WM_LBUTTONDOWN 具体代码如下 STEP 3(按键 0~9 的响应部分) 这里由于代码都大同小异,所以就用数字按钮 1,2 来进行简要说明 手把手教你 MFC 编程计算器 第20页/共23页用if 语句去判断标记常量 nEditFlag 从而给判断是 m_num1 还是 m_num2 进行操作 这里 m_num1 是编辑框

1 内的数字 m_num2 是编辑框

2 内的数字 剩下了 3~9 代码以上大同小异. 手把手教你 MFC 编程计算器 第21页/共23页 这里进行一个说明 m_num2=m_num2*10+1;

很多人会问这步是说明意思,这步乍看貌似有点一头雾水(当初我 也是这样)但是仔细看看还是能看明白的. 比方说 用户想打出自然数

234 用户第一次点的数字是

2 那么此时对应代码执行是这段 m_num2=m_num2*10+2;

那么 m_num2 = 0*10 +2 (初始化时 m_num2 = 0) 之后如果在点击

3 的时候执行的代码是 m_num2=m_num2*10+3;

(此时经过第一步 m_num2 已经为

2 了,再点了

3 结果为 m_num2= 2*10+3 = 23) 最后点击

4 执行的代码是 m_num2=m_num2*10+4;

(23*10 +4=234) 通过以上小例子 大家明白了吧~ 为什么要 先乘以

10 再加 数字 手把手教你 MFC 编程计算器 第22页/共23页 总结,其实这次非主流计算器编写,(说是非主流,说白了就是有

2 个编辑框输入数 字,人家 XP 只有

1 个编辑框 ).最大的障碍就是唯独是那个 EN_SETFOCUS 这个函数的 空白了.我只单存的百度到 GetFocus()能获得焦点,但是其实问题远远并没有那么简单, 涉及到很多问题. 我当初设置判断的时候还不知道用一个 EN_SETFOCUS,并且初始化标记这个方法,过后才 知道.我把之前的错误帖一下顺便是当作是一个警告 void CMyDlg::OnButton14Num0() { // TODO: Add your control notification handler code here UpdateData(TRUE);

if( GetDlgItem(IDC_EDIT1)->

GetFocus()) { m_num1=m_num1*10+0;

} else if( GetDlgItem(IDC_EDIT2)->

GetFocus()) { m_num2=m_num2*10+0;

} UpdateData(FALSE);

} 手把手教你 MFC 编程计算器 第23页/共23页 分析 GetDlgItem()如果大家不熟悉........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题