、クラス間変数値の転送

1371 ワード

一、親ウィンドウの変数または関数を取得する
CEpeeWomenDlg*newCpee=(CEpeeWomenDlg*)(m_comboCtrl.GetParent()->GetParent());

CString str=newCpee->m_importantStr;

ここでm_comboCtrlはサブウィンドウのコントロールです
必ず2行に分けて書いて、書かなければなりません.
CStringstr=(CEpeeWomenDlg*)(m_comboCtrl.GetParent()->GetParent())->m_importantStr;//   , ( )

注意:渡された値がNULLであるという問題が発生する場合があります.次の方法で解決します.
Dlg2   dlg; 
dlg.m_str2   =   m_str1;   // m_str1 m_str2,Dlg2::m_str2 EDIT1  
dlg.DoModal(); 

またはダイアログを直接渡す
class CDialogA2;
class CDialogA1
{
....
public:
  CDialogA2 *m_pA2;// CDialogA2 
};

class CDialogA1;
class CDialogA2
{
....
public:
  CDialogA1 *m_pA1;// CDialogA1 
};


二、クラス間の変数値の伝達
1,まず,CepeeWomenDlgで静的変数を宣言する
クラス名:
static  Cstring m_ importantStr;

はい.CPPファイルでの初期化:
CStringCEpeeWomenDlg::m_importantStr=_T("");

(初期化は、クラスの外部、すなわちグローバルで初期化する必要があります)
2、指定されたクラスで使用
str=CEpeeWomenDlg::m_importantStr;

三、VCが生成したアプリケーションファイルは、エラーが発生してはいけない場所で、エラーが発生する
「生成->クリーンアップソリューション」と「生成->クリーンアップEpeeWomen」で解決