如何将值作为字符串从 class 文件传输到输出文件?
How to transfer values as string from class file to output file?
我是编程初学者,我制作了一个基于 MFC 的 GUI 应用程序,并通过 Cptr 将变量链接到计算 class 文件。主对话框、计算和输出有 3 个 class 文件。现在我需要将该计算 class 文件的输出打印到输出对话框。
我制作了一个输出对话框及其 class 和头文件,但无法将正确的值从一个 class 传输到另一个 class,并且这些值打印在输出对话框中框为 0.00,因为它们的初始化相同。
计算 cpp:
Output Dlg;
Dlg.m_hvmid1 = HV_Tmid_1;
Dlg.m_hvmid2 = HV_Tmid_2;
Dlg.m_hvmid3 = HV_Tmid_3;
Dlg.m_hvmid4 = HV_Tmid_4;
Dlg.m_lvmid1 = LV_Tmid_1;
Dlg.m_lvmid2 = LV_Tmid_2;
Dlg.m_lvmid3 = LV_Tmid_3;
Dlg.m_lvmid4 = LV_Tmid_4;
输出 cpp:
Output::Output(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_OUTPUT, pParent)
{
}
Output::~Output()
{
}
void Output::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_HV_MID1, m_d_hvmid1);
DDX_Text(pDX, IDC_HV_MID2, m_d_hvmid2);
DDX_Text(pDX, IDC_HV_MID3, m_d_hvmid3);
DDX_Text(pDX, IDC_HV_MID4, m_d_hvmid4);
DDX_Text(pDX, IDC_LV_MID1, m_d_lvmid1);
DDX_Text(pDX, IDC_LV_MID2, m_d_lvmid2);
DDX_Text(pDX, IDC_LV_MID3, m_d_lvmid3);
DDX_Text(pDX, IDC_LV_MID4, m_d_lvmid4);
}
BEGIN_MESSAGE_MAP(Output, CDialog)
END_MESSAGE_MAP()
// Output message handlers
BOOL Output::OnInitDialog()
{
UpdateData();
CDialog::OnInitDialog();
AssignDlgToPtr1();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Output::AssignDlgToPtr1()
{
UpdateData();
m_d_hvmid1.Format(_T("%f"), m_hvmid1);
m_d_hvmid2.Format(_T("%f"), m_hvmid2);
m_d_hvmid3.Format(_T("%f"), m_hvmid3);
m_d_hvmid4.Format(_T("%f"), m_hvmid4);
m_d_lvmid1.Format(_T("%f"), m_lvmid1);
m_d_lvmid2.Format(_T("%f"), m_lvmid2);
m_d_lvmid3.Format(_T("%f"), m_lvmid3);
m_d_lvmid4.Format(_T("%f"), m_lvmid4);
UpdateData(0);
}
主对话代码:
void CThermalToolDlg::OnCalculate()
{
UpdateData();
if (!Validate()) return;
AssignDlgToPtr();
Cptr.OnCalculate();
Output Dlg;
Dlg.DoModal();
UpdateData(FALSE);
}
有人可以指出正确的方向以显示正确的计算结果而不是初始结果吗?我想我的顺序错了。
所以基本上解决方案非常简单。 Cptr 是一个 object,它在两个 类 中被调用。相反,我尝试了
void CThermalToolDlg::OnCalculate()
{
UpdateData();
if (!Validate()) return;
AssignDlgToPtr();
Cptr.OnCalculate();
Output Dlg;
Dlg.m_hvmid1 = Cptr.HV_Tmid_1;
Dlg.m_hvmid2 = Cptr.HV_Tmid_2;
Dlg.m_hvmid3 = Cptr.HV_Tmid_3;
Dlg.m_hvmid4 = Cptr.HV_Tmid_4;
Dlg.m_lvmid1 = Cptr.LV_Tmid_1;
Dlg.m_lvmid2 = Cptr.LV_Tmid_2;
Dlg.m_lvmid3 = Cptr.LV_Tmid_3;
Dlg.m_lvmid4 = Cptr.LV_Tmid_4;
Dlg.m_amb = Cptr.m_tamb;
Dlg.DoModal();
UpdateData(FALSE);
}
Cptr 未在输出 header 中再次声明。这是唯一的错误
我是编程初学者,我制作了一个基于 MFC 的 GUI 应用程序,并通过 Cptr 将变量链接到计算 class 文件。主对话框、计算和输出有 3 个 class 文件。现在我需要将该计算 class 文件的输出打印到输出对话框。
我制作了一个输出对话框及其 class 和头文件,但无法将正确的值从一个 class 传输到另一个 class,并且这些值打印在输出对话框中框为 0.00,因为它们的初始化相同。
计算 cpp:
Output Dlg;
Dlg.m_hvmid1 = HV_Tmid_1;
Dlg.m_hvmid2 = HV_Tmid_2;
Dlg.m_hvmid3 = HV_Tmid_3;
Dlg.m_hvmid4 = HV_Tmid_4;
Dlg.m_lvmid1 = LV_Tmid_1;
Dlg.m_lvmid2 = LV_Tmid_2;
Dlg.m_lvmid3 = LV_Tmid_3;
Dlg.m_lvmid4 = LV_Tmid_4;
输出 cpp:
Output::Output(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_OUTPUT, pParent)
{
}
Output::~Output()
{
}
void Output::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_HV_MID1, m_d_hvmid1);
DDX_Text(pDX, IDC_HV_MID2, m_d_hvmid2);
DDX_Text(pDX, IDC_HV_MID3, m_d_hvmid3);
DDX_Text(pDX, IDC_HV_MID4, m_d_hvmid4);
DDX_Text(pDX, IDC_LV_MID1, m_d_lvmid1);
DDX_Text(pDX, IDC_LV_MID2, m_d_lvmid2);
DDX_Text(pDX, IDC_LV_MID3, m_d_lvmid3);
DDX_Text(pDX, IDC_LV_MID4, m_d_lvmid4);
}
BEGIN_MESSAGE_MAP(Output, CDialog)
END_MESSAGE_MAP()
// Output message handlers
BOOL Output::OnInitDialog()
{
UpdateData();
CDialog::OnInitDialog();
AssignDlgToPtr1();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Output::AssignDlgToPtr1()
{
UpdateData();
m_d_hvmid1.Format(_T("%f"), m_hvmid1);
m_d_hvmid2.Format(_T("%f"), m_hvmid2);
m_d_hvmid3.Format(_T("%f"), m_hvmid3);
m_d_hvmid4.Format(_T("%f"), m_hvmid4);
m_d_lvmid1.Format(_T("%f"), m_lvmid1);
m_d_lvmid2.Format(_T("%f"), m_lvmid2);
m_d_lvmid3.Format(_T("%f"), m_lvmid3);
m_d_lvmid4.Format(_T("%f"), m_lvmid4);
UpdateData(0);
}
主对话代码:
void CThermalToolDlg::OnCalculate()
{
UpdateData();
if (!Validate()) return;
AssignDlgToPtr();
Cptr.OnCalculate();
Output Dlg;
Dlg.DoModal();
UpdateData(FALSE);
}
有人可以指出正确的方向以显示正确的计算结果而不是初始结果吗?我想我的顺序错了。
所以基本上解决方案非常简单。 Cptr 是一个 object,它在两个 类 中被调用。相反,我尝试了
void CThermalToolDlg::OnCalculate()
{
UpdateData();
if (!Validate()) return;
AssignDlgToPtr();
Cptr.OnCalculate();
Output Dlg;
Dlg.m_hvmid1 = Cptr.HV_Tmid_1;
Dlg.m_hvmid2 = Cptr.HV_Tmid_2;
Dlg.m_hvmid3 = Cptr.HV_Tmid_3;
Dlg.m_hvmid4 = Cptr.HV_Tmid_4;
Dlg.m_lvmid1 = Cptr.LV_Tmid_1;
Dlg.m_lvmid2 = Cptr.LV_Tmid_2;
Dlg.m_lvmid3 = Cptr.LV_Tmid_3;
Dlg.m_lvmid4 = Cptr.LV_Tmid_4;
Dlg.m_amb = Cptr.m_tamb;
Dlg.DoModal();
UpdateData(FALSE);
}
Cptr 未在输出 header 中再次声明。这是唯一的错误