2014-09-19 1 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

[Dialog Data Exchange] (http://msdn.microsoft.com/en-us/library/xwz5tb1x.aspx) –

+0

초기 값은 무엇입니까? 초기 값을 제공하지 않습니다. – rrirower

+0

나는 코드 조각이 600 줄 이상 길어 지므로 코드 스 니펫을 제거했다. 그러나 문제는 DDX 매크로를 사용하여 가치를 얻지 못하는 것과 같습니다. – user3494614

답변

1

컨트롤과 int 변수 간의 데이터 교환은 마술처럼 발생하지 않습니다. UpdateData 멤버 함수를 호출 할 때 발생합니다. 그 기능에 대한 전화가 있으십니까?

관련 문제