在对话框加了三个编辑控件,用ClassWazzard给它们添加了三个变量,分别是double m_a,double m_b,double m_c
然后在下面的代码中改变了初值 CTest2Dlg::CTest2Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CTest2Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTest2Dlg)
m_a = 111.0;
m_b = 2.0;
m_c = 41.11;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}接着在对话框类中加函数int CTest2Dlg::Value_L0(double m_a,double m_b,double m_c)
{
int N =(int)( ( m_a + m_b/60 + m_c/3600)/6 ) +1 ; //m_a,m_b,m_c分别是度、分、秒,类型强制转换
int L0 = 6*N-3;
return L0;
}
编译运行都没问题,可是就是值不对,我设置了断点,然后step over看了一下,N的值为1,L0的值为3,而正确的N应该是19,L0为111,说明m_a,m_b,m_c都没参加运算,是不是我的参数有问题?异或是别的什么问题?
然后在下面的代码中改变了初值 CTest2Dlg::CTest2Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CTest2Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTest2Dlg)
m_a = 111.0;
m_b = 2.0;
m_c = 41.11;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}接着在对话框类中加函数int CTest2Dlg::Value_L0(double m_a,double m_b,double m_c)
{
int N =(int)( ( m_a + m_b/60 + m_c/3600)/6 ) +1 ; //m_a,m_b,m_c分别是度、分、秒,类型强制转换
int L0 = 6*N-3;
return L0;
}
编译运行都没问题,可是就是值不对,我设置了断点,然后step over看了一下,N的值为1,L0的值为3,而正确的N应该是19,L0为111,说明m_a,m_b,m_c都没参加运算,是不是我的参数有问题?异或是别的什么问题?
解决方案 »
- 请问在MFC中,要使用自己的头文件,应该如何设置?
- 画不规则对话框时出的一问题
- CSplitterWnd 中各个view一起scroll该怎么做?
- 请问我在myframwork中建立WM_TIME和OnTimer()的映射,而且在ontimer里边调用updatewindow(),
- VB如何监控用vc写的动态连接库的事件?
- 分为0不能提问了,转移分值,对不起啊
- 如何考虑一台服务器同时有600个客户端的通信问题?
- 请问怎样把_variant_t类型数据转换为CString类型数据.
- 如何用VC开发这个控件???
- 为中国的软件争气!!!
- 请教高手!!!关于位运算得问题
- CListCtrl中显示文件夹,双击文件夹 然后进入子文件夹,再双击显示文件 该怎么实现???
UpdataDate(TRUE)
二楼:我的这个对话框类没这个OnInitialDialog()函数,可能是这个对话框是DoModal出来的原因吧
时,没有使用如下形式:
Value_L0(m_a,m_b,m_c);
别外既然是成员变量可以把
Value_L0(double m_a,double m_b,double m_c)
直接变成
Value_L0(void)
不用再传形参了
我估计问题出在double m_a,double m_b,double m_c 。
因为我的vc++2005中编辑框控件只支持CString类型,而不支持double,不知道你的vc6.0情况怎样。
所以我项目中把三个编辑控件用CString m_a,CString m_b,CString m_c 关联后,可以得出正确的结果。
你使用时把CString转换为double就可以了(atof(m_a))
int N =(int)( ( atof(m_a) + atof(m_b)/60 + atof(m_c)/3600)/6 ) +1