0

今のところ、次のように2つのダイアログに2つの構造があります

GetDialog.h
struct GetDlgData{
int     nStatic1;
int     nStatic2;
CString strEdit1;   
CString strEdit2;       
};
GetDlgData g_structData;
CStatic m_staticGet1;
CStatic m_staticGet2;
CEdit m_editGet1;
CEdit m_editGet2;
void SetGetValue();
GetDlgData GetGetValue(){return g_structData;}
virtual BOOL OnInitDialog();

DoModalGetDataDlg.h
struct DoData {
  int   nStatic1;
  int   nStatic2;
  CString strEdit1; 
  CString strEdit2;     
};
CStatic m_staticDo1;
CStatic m_staticDo2;
CEdit m_editDo1;
CEdit m_editDo2;
DoData g_structData;
void SetDoValue();  
DoData GetDoValue() { return g_structData;}
afx_msg void OnBnClickedButtonDo();

構造体に保存する他のダイアログに値を送信したい

DoModalGetDataDlg.cpp
void CDoModalGetDataDlg::SetDoValue()
{
CString strTemp;

strTemp.Empty();
m_staticDo1.GetWindowText(strTemp);
g_structData.nStatic1 = _ttoi(strTemp);

strTemp.Empty();
m_staticDo2.GetWindowText(strTemp);
g_structData.nStatic2 = _ttoi(strTemp);

m_editDo1.GetWindowText(g_structData.strEdit1);

m_editDo2.GetWindowText(g_structData.strEdit2);
}

void CDoModalGetDataDlg::OnBnClickedButtonDo()
{
DoData structData;
SetDoValue();

CGetDialog GetDlg;
GetDlg.DoModal();
}

ダイアログの初期化時に、GetDlg.cpp でデータを取得します。

BOOL CGetDialog::OnInitDialog()
{
CDialog::OnInitDialog();
SetGetValue();

return TRUE;  // return TRUE unless you set the focus to a control
}

void CGetDialog::SetGetValue()
{
 CDoModalGetDataDlg DoDlg(AfxGetMainWnd());
 memcpy(&g_structData, &DoDlg.GetDoValue(), sizeof(GetDlgData));

 CString strTemp;
 strTemp.Empty();
 strTemp.Format(_T("%d"), g_structData.nStatic1);
 m_staticGet1.SetWindowText(strTemp);

 strTemp.Empty();
 strTemp.Format(_T("%d"), g_structData.nStatic2);
 m_staticGet2.SetWindowText(strTemp);

 m_editGet1.SetWindowText(g_structData.strEdit1);

 m_editGet2.SetWindowText(g_structData.strEdit2);
}

ただし、me​​mcpy 領域では、値はランダムです。どうすれば解決できますか...

どうもありがとう!

4

1 に答える 1