小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VC++對(duì)話框間變量傳遞

 行走在理想邊緣 2014-05-14

提供兩種方案, 1 如果新建的對(duì)話框是主窗口的子窗體可以這樣.將這五個(gè)變量定義為Public的,然后在子對(duì)話框中this->GetParent()->mNumber; mNumber為其中一個(gè)變量. 2 在新建的對(duì)話框類中提供一個(gè)Public的函數(shù),在主程序中調(diào)用,將這五個(gè)變量值傳遞過去.

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

可以有兩種方法,假設(shè)你的主窗口對(duì)話框類為CMainWnd,其中一個(gè)變量為str,新建的對(duì)話框類為CNewWnd:
第一種:取父窗口指針
在CNewWnd類中這樣使用
/*當(dāng)然要include   CMainWnd類的頭文件*/
CMainWnd* pwnd = (CMainWnd*)GetParent();
此時(shí),pwnd就是CMainWnd的一個(gè)窗口類指針了,可以直接使用它的公共成員,如
pwnd->str
第二種:全局窗口指針
在CMainWnd的cpp文件里定義一個(gè)全局窗口指針如:CMainWnd* g_pWnd;
然后在CMainWnd的構(gòu)造函數(shù)里對(duì)它初始化:g_pWnd=this;
在CNewWnd類的cpp文件中聲明這個(gè)外部變量
extern CMainWnd* g_pWnd,
這樣,也可以直接使用CMainWnd類的公共成員,如:
g_pWnd->str

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

在對(duì)話框類里重載構(gòu)造函數(shù)
MyDlg(變量1,變量2,...變量5)
{}

這樣就OK了,很簡(jiǎn)單吧

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

我習(xí)慣使用火駒的方法。封裝性較好,個(gè)人感覺。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Dialog1的類名是CDialog1, 頭文件是dialog1.h。里有成員變量CString str1, str2; Dialog2的類名是CDialog2, 頭文件是dialog2.h。里有成員變量CString str11, str22; 要想將Dialog1里的變量傳遞給Dialog2里的變量,可以用這種方法:在類 CDialog1 的頭文件里,引入Dialog2的頭文件: #include "dialog2.h" 在類 CDialog1 的定義里聲明Dialog2的對(duì)象: CDialog2 m_Dialog2; 在類 CDialog1 的cpp文件里的初始化函數(shù)里(其實(shí)應(yīng)該在你需要的時(shí)候進(jìn)行如下操作),UpdateData(TRUE); str1.Format("xixi");str2.Format("haha");m_Dialog2.str11 = str1; m_Dialog2.str22 = str2;UpdateData(FALSE);這樣,就把值已經(jīng)傳給Dialog2了!要是想在Dialog2里使用str11,str22的時(shí)候,加上UpdateData(TRUE);

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

vc里面怎樣實(shí)現(xiàn)對(duì)話框之間傳遞變量的值(原)
對(duì)話框1 CDlg1 該對(duì)話框 有個(gè)編輯框 Ceidt m1_text;對(duì)話框2 CDlg2 該對(duì)話框類 有個(gè)成員變量 Cstring m2_text 還有一個(gè)按鈕Button2用于打開對(duì)話框1過程描述:打開對(duì)話框2,單擊按鈕Button2打開對(duì)話框1,給 m1_text賦值,關(guān)閉對(duì)話框1,將m1_text的值傳給m2_text.實(shí)現(xiàn):Dlg2.cpp
  CString   m2_text;  
  CDlg1   m_logindlg;  
  if(m_logindlg.DoModal()==ID_OK)  
  {   
          m2_text=m_logindlg.m1_text;   
  }  

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  crazyboy (ppp)于2005年05月25日02:26:37 星期三)
提到:

1.比較特殊情況下:
  比如:兩個(gè)對(duì)話框關(guān)系是:點(diǎn)擊對(duì)話框1的按鈕,然后會(huì)運(yùn)行對(duì)話框2
  可以這樣:CXXXDialog2 dlg;
            dlg.xxx =  yyy; //yyy是對(duì)話框1的值,賦值給對(duì)話框2的xxx
2.兩個(gè)對(duì)話框完全沒有關(guān)聯(lián):
可以這樣:
    a)把數(shù)據(jù)保存在文件里面,讀寫(操作.ini也不錯(cuò))
    b)CWinApp類里面可以添加變量xxx;
      通過AfxGetApp()->xxx;來保存和讀取變量;  

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

想把在主窗口得到的一個(gè)值例如   dcount=100;在一個(gè)對(duì)話框打開時(shí)間去的這個(gè)值 問題點(diǎn)數(shù):50、回復(fù)次數(shù):19

1 樓softsprite(軟件精靈)回復(fù)于 2000-08-30 09:06:00 得分 0

如果需要傳遞的變量不多的話,在對(duì)話框類中建立相應(yīng)的成員變量:  
  CMyDialog   myDialog(this);  
  myDialog.m_dcount   =   dcount;  
  if   (   myDialog.DoModal()   ==   IDOK   )  
  {  
      dcount   =   myDialog.m_dcount;  
  }  
   
  如果需要傳遞的變量比較多或比較復(fù)雜,可以專門建立一個(gè)結(jié)構(gòu)放這些變量,在對(duì)話框類中建立這個(gè)結(jié)構(gòu)類型的指針,用類似的方法傳遞指針即可。

2 樓luxes()回復(fù)于 2000-08-30 09:09:00 得分 10

把這個(gè)值定義為主窗口的public成員變量:m_dcount,  
  在dialog里:訪問:AfxGetMainWnd()->m_dcount

3 樓skyrain(skyrain)回復(fù)于 2000-08-30 09:10:00 得分 0

這兒的dcount   在哪兒定義?CMyDialog   myDialog(this);應(yīng)該寫哪兒?  
   
 

4 樓Tiangz()回復(fù)于 2000-08-30 09:11:00 得分 0

在Dialog的.h文件中包含MainFrm.h,若dcount是一個(gè)public成員,則可以  
  GetMainFrame()->dcount,否則可以在MainFrame中定義一個(gè)函數(shù)專門得到該參數(shù),在  
  Dialog中調(diào)用即可

5 樓softsprite(軟件精靈)回復(fù)于 2000-08-30 09:25:00 得分 0

dcount是主窗口中的變量,是你自己提出來的呀!  
  CMyDialog   myDialog(this);這一整段代碼可以放在主窗口中你需要彈出對(duì)話框的地方。比如你需要按某個(gè)菜單項(xiàng)彈出這個(gè)對(duì)話框,可以在主窗口處理這個(gè)菜單項(xiàng)的函數(shù)中使用這段代碼。  
 

6 樓skyrain(skyrain)回復(fù)于 2000-08-30 10:41:00 得分 0

我在MainFrm.h中加入public變量dcount,在對(duì)話框的MyDialog.h中加入#include   "mainfrm.h"  
  可在用AfxGetMainWnd()->dcount時(shí)間編譯報(bào)CWnd沒有這個(gè)成員

7 樓magicwizard(巫師)回復(fù)于 2000-08-30 10:44:00 得分 0

softsprite在第一個(gè)回復(fù)里說得很詳細(xì),仔細(xì)看看分析一下.  
  或者你把自己的問題說得更詳細(xì)一些.

8 樓skyrain(skyrain)回復(fù)于 2000-08-30 10:54:00 得分 0

我用MFC建立了一個(gè)單文檔程序data,自己添加了一個(gè)對(duì)話框類,叫mydialog  
  在dataView.cpp中我得到一個(gè)變量   int   dcount=100,當(dāng)點(diǎn)擊一個(gè)按鈕時(shí)打開我的對(duì)話框,在對(duì)話框  
  中我想用dcount的值,我該怎么做

9 樓a2000(夜雨)回復(fù)于 2000-08-30 11:08:00 得分 0

在CMyApp中建一個(gè)變量dcount;然后在CMyDialog   中用AfxGetApp()->dcount.就行了.

10 樓skyrain(skyrain)回復(fù)于 2000-08-30 11:11:00 得分 0

CMyApp是自定義的類嗎

11 樓Holly()回復(fù)于 2000-08-30 11:18:00 得分 20

所有的AfxGetApp()或AfxGetMainWnd()的到的指針都需要強(qiáng)制轉(zhuǎn)換  
  ((CMyApp*)AfxGetApp())和((CMainFrame*)AfxGetMainWnd())

12 樓Holly()回復(fù)于 2000-08-30 11:23:00 得分 0

另外,盡量采用softsprite在第一貼的方法,直接取變量的方法使代碼的控制混亂,是不好的編碼風(fēng)格,應(yīng)當(dāng)避免,養(yǎng)成習(xí)慣就不好了?

13 樓skyrain(skyrain)回復(fù)于 2000-08-30 11:28:00 得分 0

softsprite的方法我看不懂,m_count在哪定義的,  
  dcount   =   myDialog.m_dcount;什么意思,寫在哪兒(我是要取得dcount的值)  
 

14 樓softsprite(軟件精靈)回復(fù)于 2000-08-30 11:40:00 得分 20

在MyDialog.h中定義:int   m_dcount;  
  在MainFrm.h中定義:int   dcount;  
  第一貼中的代碼是在主窗口CMainFrame中的。  
  myDialog.m_dcount就是取得CMyDialog類的實(shí)例的成員變量m_dcount,然后這個(gè)變量可以和主窗口CMainFrame中的變量dcount互相交換值。  
  。。。。我的汗都下來了!  
 

15 樓xiaoyuer(我是一只蟲)回復(fù)于 2000-08-30 12:09:00 得分 0

只要取得窗口類的指針即可!

16 樓hnalbert(再戰(zhàn))回復(fù)于 2000-08-30 12:13:00 得分 0

You   can   do   just   as   what   softsprite   told   you.  
  There   is   no   need   of   pointer   to   CWnd.

17 樓iforever(iforever)回復(fù)于 2000-09-01 14:42:00 得分 0

聽HOLLY的

 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

用資源分別建立兩個(gè)對(duì)話框.兩對(duì)話框無任何聯(lián)系.
現(xiàn)在想將第1個(gè)對(duì)話框中EDIT編輯框中的數(shù)據(jù)傳遞給另一個(gè)對(duì)話框的EDIT編輯框中。
不知道如何解決。我是VC新手,希望高手能講解具體一點(diǎn),謝謝.

一句話
GetDlgItem(EDIT2的ID)-> SetWindowText(GetDlgItem(EDIT1的ID)-> GetWindowText());

 

回復(fù)于:2006-05-26 10:17:51 方法一:在第二個(gè)對(duì)話框中調(diào)用第一個(gè)對(duì)話框
方法二:在App類中定義一個(gè)變量,在第一個(gè)對(duì)話框中把控件值傳給該變量,在第二個(gè)對(duì)話框中把該變量值傳給控件

 

#5樓 得分:0回復(fù)于:2006-05-26 11:37:21

在需要實(shí)現(xiàn)該功能的地方調(diào)用:
(例如在一個(gè)對(duì)話框1類里面,把對(duì)話框1上的IDC_EDIT1里的內(nèi)容傳到
對(duì)話框2的IDC_EDIT2里面):
CString   strText;
GetDlgItem(IDC_EDIT1)-> GetWindowText(strText);   //得到對(duì)話框1的IDC_EDIT1內(nèi)容
(FindWindow(NULL, "對(duì)話框2的標(biāo)題 ")-> GetDlgItem(IDC_EDIT2))-> SetWindowText(strText);   //顯示對(duì)話框1的IDC_EDIT1內(nèi)容;
                  (FindWindow(NULL, "對(duì)話框2的標(biāo)題 ")-> GetDlgItem(IDC_EDIT2))-> GetWindowText(strText);       //   得到顯示對(duì)話框2的IDC_EDIT2內(nèi)容(在strText里)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多