2014-09-19 79 views
3

我有一個帶有靜態文本和編輯控件的對話框。在對話框控件類中,我有一個控制變量,它可以在編輯框中設置初始值,當用戶修改它時,會有一個具有編輯框值的int。兩者都是私有變量,但我沒有獲得整數變量的值。是否有任何方式下面檢測該被取樣的代碼基礎MFC EditControl的值不是私人成員

class CYrdAuthorityPage : public CPropertyPage 
{ 
    DECLARE_DYNAMIC(CYrdAuthorityPage) 

public: 
    CYrdAuthorityPage(); 
    virtual ~CYrdAuthorityPage(); 

// Dialog Data 
    enum { IDD = IDD_YRD_AUTHORITY_DIALOG }; 


protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 

    DECLARE_MESSAGE_MAP() 
private: 
    CEdit m_authctrl; 
    int m_authval; 
public: 
    afx_msg void OnEnChangeAuthEdit(); 

}; 

IMPLEMENT_DYNAMIC(CYrdAuthorityPage, CPropertyPage) 

CYrdAuthorityPage::CYrdAuthorityPage() 
    : CPropertyPage(CYrdAuthorityPage::IDD) 
{ 

} 

CYrdAuthorityPage::~CYrdAuthorityPage() 
{ 
} 

void CYrdAuthorityPage::DoDataExchange(CDataExchange* pDX) 
{ 
    CPropertyPage::DoDataExchange(pDX); 
    DDX_Control(pDX, IDC_AUTH_EDIT, m_authctrl); 
    DDX_Text(pDX,IDC_AUTH_EDIT,m_authval); 
} 


/*BEGIN_MESSAGE_MAP(CYrdAuthorityPage, CPropertyPage) 
    ON_EN_CHANGE(IDC_AUTH_EDIT, &CYrdAuthorityPage::OnEnChangeAuthEdit) 
END_MESSAGE_MAP()*/ 

這裏m_authval不具有價值。我認爲這可能是因爲它是私人的,但公開也給出了相同的結果。我已經設置了編輯框來集中對齊文本。

謝謝

+0

[對話數據交換](http://msdn.microsoft.com/en-us/library/xwz5tb1x.aspx) – 2014-09-19 12:07:34

+0

您是否在談論初始值?你不提供初始值。 – rrirower 2014-09-19 12:37:48

+0

我剛剛給出了一些代碼片段,我刪除了一些細節,因爲代碼長度超過600行。但問題是一樣的,我沒有使用DDX宏獲得價值。 – user3494614 2014-09-19 12:45:35

回答

1

控制和int變量之間的數據交換不會神奇地發生。它在您調用UpdateData成員函數時發生。你有打電話給那個功能嗎?