2013-03-11 27 views
0

請,我花了整天試圖弄清楚,但不能。我有一個類(artist1)從一個對話框創建一些編輯框。我想要在編輯框中輸入數據並將其保存到我在課堂上公開的變量中。但不知道爲什麼它不起作用。 PS是mfc編程的新手。在這裏感謝 是我的美術類需要幫助,以獲得變量在mfc對話框類

void artist1::OnBnClickedButton1() 
{ 
    //artist1 AA=*art1; 

    CEdit* pEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1); 
    pEdit1->GetWindowText(Name1); 
    nn=new CString; 
    *nn=Name1; 
    CEdit* pEdit2 = (CEdit*)GetDlgItem(IDC_EDIT2); 
    pEdit2->GetWindowText(Age1); 
    n2=new CString; 
    *n2=Age1; 
    CEdit* pEdit3 = (CEdit*)GetDlgItem(IDC_EDIT3); 
    pEdit3->GetWindowText(Nationality1); 
    n3=new CString; 
    *n3=Nationality1; 
    CEdit* pEdit4 = (CEdit*)GetDlgItem(IDC_EDIT4); 
    pEdit4->GetWindowText(Group1); 
    n4=new CString; 
    *n4=Group1; 
    CEdit* pEdit5 = (CEdit*)GetDlgItem(IDC_EDIT5); 
    pEdit5->GetWindowText(num_of_albums1); 
    n5=new CString; 
    *n5=num_of_albums1; 
    SH(Name1,Age1,Nationality1,Group1,num_of_albums1); 
    art1=this; 
// memcpy(art1,this,sizeof(this)); 

    //Name_box.SetWindowText(g); 
    //AfxMessageBox(Age); 
    //AfxMessageBox(Nationality); 
    // TODO: Add your control notification handler code here 

} 

/*bool artist1::SH() 
{ 
    if(NoShow==false)return true; 
    else return false; 
}*/ 
void artist1::OnBnClickedButton2() 
{ 
    //Cooplab1View vm; 
    NoShow=false; 
    nvalidateRect(NULL,NULL); 
    EndDialog(IDD_FORMVIEW); 

    // TODO: Add your control notification handler code here 
} 

這裏是類藝術家頭

class artist1 : public CDialogEx 
{ 
    //DECLARE_DYNAMIC(artist1) 

public: 
    artist1(CWnd* pParent = NULL); // standard constructor 
    virtual ~artist1(); 
    bool NoShow; 
    bool *address; 

    CString Albums[5]; 

    void OnInsertArtist(artist1 &at); 
// Dialog Data 
    enum { IDD = IDD_FORMVIEW }; 
private: 
    CString Nm; 
    CString Ag; 
    CString Nation; 
    CString group; 
    CString No_of_A; 
    CString *nnn; 

public: 
    // artist1* GetTreeObj(); 
    //virtual CString ShowDetails(CDC* pDC); 
    void SH(CString a,CString b,CString c,CString d,CString e) 
{ 
    Name=a; 
    Age=b; 
    Nationality=c; 
    Group=d; 
    num_of_albums=e; 
} 

protected: 
    CString Name,Age,Nationality,Group,num_of_albums; 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 
    CString Name1,Age1,Nationality1,Group1,num_of_albums1; 
    DECLARE_MESSAGE_MAP() 
public: 
    afx_msg void OnBnClickedButton1(); 
    virtual CString ShowDetails(CDC* pDC,artist1 & at1); 

    afx_msg void OnBnClickedButton2(); 
}; 

和我所說的類從CView類的cpp文件

void Cooplab1View::OnDraw(CDC* pDC) 
{ 
    artist1 art; 
    artist1 A1; 
    Cooplab1Doc* pDoc = GetDocument(); 
    //ASSERT_VALID(pDoc); 
    //if (!pDoc) 
    // return; 



    if (noShow) 
    { 
     art.OnInsertArtist(art); 
     //art.OnBnClickedButton1(); 
     //art=&obj; 
    // art.GetTreeObj(); 
     art.ShowDetails(pDC,art); 
    } 

    ASSERT_VALID(pDoc); 
    if (!pDoc) 
     return; 
    // TODO: add draw code for native data here 
} 


void Cooplab1View::OnInsertArtist1() 
{ 
    noShow=true; 
    InvalidateRect(NULL,NULL); 
    //UpdateWindow(); 
} 

回答

0

我終於解決了這個問題。我聲明瞭一些全局變量,在OnBnClickedButton1()中使用GetDlgItemText將編輯框中輸入的值賦值給它們,然後在OnBnClickedButton2()中將全局變量賦值給我的類中的變量,例如Name,Age等。

0
  1. 你應該創建與您的「編輯框」匹配的變量(右鍵單擊 - >在vs2010中添加變量)並檢查其值。
    不要做「GetDlgItem」而不要GetWindowText。
  2. 您應該在OnBnClickedButton1的第一行添加UpdateData(TRUE)
  3. 祝您好運!
+0

我試過但它沒有改變任何東西。 – uchman21 2013-03-11 22:54:59

+0

已經做到了。但是當我點擊按鈕2以顯示它時,所有條目都變爲NULL – uchman21 2013-03-12 05:27:17

0

你的課是相當混亂的,但如果你只是想從對話項目中提取用戶輸入文本,其實很簡單。

void artist1::OnBnClickedButton1() 
{ 
    // Since variables Name,Age,Nationality,Group,num_of_albums are all CString items 
    // declare as member variables in the class, 
    // you can just retrieve user entry from the dialog directly into them 
    // without calling the "SH(Name1,Age1,Nationality1,Group1,num_of_albums1);" 
    GetDlgItemText(IDC_EDIT1, Name); 
    GetDlgItemText(IDC_EDIT2, Age); 
    GetDlgItemText(IDC_EDIT3, Nationality); 
    GetDlgItemText(IDC_EDIT4, Group); 
    GetDlgItemText(IDC_EDIT5, num_of_albums); 
} 
+0

已經這樣做了。但是當我點擊按鈕2以顯示它時,所有條目都變爲NULL – uchman21 2013-03-12 05:26:55

+0

我的問題是如何獲取我存儲的變量,以便另一個類可以繼承它們 – uchman21 2013-03-12 06:39:53

0

如果您正在輸入編輯控件的值,應該調用updatedata(FALSE)。如果您想將值存儲到變量中,請調用updatedata(TRUE)。而已。