工程中CFormView类和一个CListCtrl类,头文件问题已经解决,传值问题该怎么解决,

时间:2022-11-21 04:31:49
我想把CListCtrl类获取的一个值传到CFormView类上的一个文本框上

vi->SetDlgItemText(IDC_text_part,str);

vi是CFormView派生类的指针,str是CListCtrl派生类的值,想把它传到CFormView派生类的文本框里,编译没错,运行错了。如何解决呢?

8 个解决方案

#1


CWnd *pWnd = vi->GetDlgItem(IDC_text_part);
if(pWnd != NULL)

    CEdit *pEdit = (CEdit*)pWnd;
    pEdit->SetWindowText(str);
}

#2


引用 1 楼 gradual 的回复:
CWnd *pWnd = vi->GetDlgItem(IDC_text_part);
if(pWnd != NULL)

  CEdit *pEdit = (CEdit*)pWnd;
  pEdit->SetWindowText(str);
}


这样运行时还是有错,都不懂是错在哪

#3


我在别的类用vi->GetDlgItem(IDC_text_part);
IDC_text_part是在别的类上的。有问题吗

#4


你的vi指针有效吗?

#5


引用 3 楼 dsh007 的回复:
我在别的类用vi->GetDlgItem(IDC_text_part);
IDC_text_part是在别的类上的。有问题吗
应该用IDC_text_part所属的form类来调用GetDlgItem。

#6


试试这样  


  CMainFrame *pMain=(CMainFrame*) AfxGetApp()->m_pMainWnd;   
  CChiGramView *pView=( CChiGramView * ) pMain-> GetActiveView();   
  ((CEdit *)(pView->GetDlgItem(IDC_text_part)))->SetWindowText(str);;//

#7


引用 6 楼 hztj2005 的回复:
试试这样  


  CMainFrame *pMain=(CMainFrame*) AfxGetApp()->m_pMainWnd;  
  CChiGramView *pView=( CChiGramView * ) pMain-> GetActiveView();  
  ((CEdit *)(pView->GetDlgItem(IDC_text_part)))->SetWindo……



高手谢谢,这样就对了。不过能解释下为什么要这样才可以吗

#8


你在CListCtrl类中用vi->未必得到了有效的view窗口指针。

CMainFrame *pMain=(CMainFrame*) AfxGetApp()->m_pMainWnd;   
CChiGramView *pView=( CChiGramView * ) pMain-> GetActiveView(); 
这样肯定得到view窗口指针。

pView->GetDlgItem(IDC_text_part)
得到的是CWnd *pWnd 
需要(CEdit *)转换才能使用->SetWindowText(str);

((CEdit *)(pView->GetDlgItem(IDC_text_part)))->SetWindowText(str);;//

#1


CWnd *pWnd = vi->GetDlgItem(IDC_text_part);
if(pWnd != NULL)

    CEdit *pEdit = (CEdit*)pWnd;
    pEdit->SetWindowText(str);
}

#2


引用 1 楼 gradual 的回复:
CWnd *pWnd = vi->GetDlgItem(IDC_text_part);
if(pWnd != NULL)

  CEdit *pEdit = (CEdit*)pWnd;
  pEdit->SetWindowText(str);
}


这样运行时还是有错,都不懂是错在哪

#3


我在别的类用vi->GetDlgItem(IDC_text_part);
IDC_text_part是在别的类上的。有问题吗

#4


你的vi指针有效吗?

#5


引用 3 楼 dsh007 的回复:
我在别的类用vi->GetDlgItem(IDC_text_part);
IDC_text_part是在别的类上的。有问题吗
应该用IDC_text_part所属的form类来调用GetDlgItem。

#6


试试这样  


  CMainFrame *pMain=(CMainFrame*) AfxGetApp()->m_pMainWnd;   
  CChiGramView *pView=( CChiGramView * ) pMain-> GetActiveView();   
  ((CEdit *)(pView->GetDlgItem(IDC_text_part)))->SetWindowText(str);;//

#7


引用 6 楼 hztj2005 的回复:
试试这样  


  CMainFrame *pMain=(CMainFrame*) AfxGetApp()->m_pMainWnd;  
  CChiGramView *pView=( CChiGramView * ) pMain-> GetActiveView();  
  ((CEdit *)(pView->GetDlgItem(IDC_text_part)))->SetWindo……



高手谢谢,这样就对了。不过能解释下为什么要这样才可以吗

#8


你在CListCtrl类中用vi->未必得到了有效的view窗口指针。

CMainFrame *pMain=(CMainFrame*) AfxGetApp()->m_pMainWnd;   
CChiGramView *pView=( CChiGramView * ) pMain-> GetActiveView(); 
这样肯定得到view窗口指针。

pView->GetDlgItem(IDC_text_part)
得到的是CWnd *pWnd 
需要(CEdit *)转换才能使用->SetWindowText(str);

((CEdit *)(pView->GetDlgItem(IDC_text_part)))->SetWindowText(str);;//