MFC UpdateData()函数BUG
5个Edit控件分别关联5个double型变量,变量初始化为零,也都显示0;
1.手动修改最上面一个Edit的内容为888.888;其余保持不变;
2.点“刷新”按钮执行 UpdateData(TRUE); UpdateData(FALSE);
正常应该不发生任何变化,但是,发现其余4个Edit控件的内容发生了变化;
打断点查看变量,单步执行 UpdateData(TRUE);后,其余4个double变量发生了变化,不为零了;
以上异常在debug模式下观察不到,在release下才有;编译环境Win7,VS2015
2021.05.19更新,初步可以肯定是windows系统问题,和vs2015无关,打全补丁的win7系统上面运行正常,但未能定位到究竟与哪个补丁相关。
2021.06.05更新,vs2015下改设置为MFC静态库编译,无论在什么样的windows系统的机器上运行,该bug都存在;但是在vs2010下面编译,该bug怎么都不存在,说明还是和vs2015有关。
工程可免分下载:https://download.csdn.net/download/weixin_46252404/18806988
和之前一样,做了瘦身小很多:https://download.csdn.net/download/weixin_46252404/20678143
下面粘出代码:
// MFCApplication1Dlg.h : 头文件
//
#pragma once
// CMFCApplication1Dlg 对话框
class CMFCApplication1Dlg : public CDialogEx
{
// 构造
public:
CMFCApplication1Dlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_MFCAPPLICATION1_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LP