编辑: 被控制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()如果大家不熟悉........