Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: [MFC]¬°¤°»ò§Ú·ÓµÛÁÙ¬O¶]¤£¥X¨Ó~><\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

0 views
Skip to first unread message

天涯共此時

unread,
Oct 29, 2004, 6:06:52 AM10/29/04
to

\\\\\\\\\\\\\\\\\\\\\\\\\\\"
※ 引述《mati...@bbs.ee.ttu.edu.tw (快樂)》之銘言:
> > 這就牽扯到你的DDX 定義方式...
> > 1. 資料存取方式可以是變數(int, CString) vs資源(可以是button,
edit....)
> > m_strFirstName就是利用CString的data member存取資源控制項的文字;
> > 前提是你要宣告DDX_Text(...)之類的函式並配合UpdateData()取值.
> ^^^^^^^^^^^^^^^^^^^^^^^
> 什麼是DDX呢?
> 是像editbox滑鼠右鍵->properties裡的ID嗎?
> 還是ClassWizard中的設定呢?


Do Data Exchange....

如下列所示, 簡單的說就是把Windows 的視窗資源, 如: Button, Edit,
Static, Radio Button...的屬性與資料, 透過DDX與C++的data member
(如CEdit, CButton, 或是一般變數, CString, int, float...) 整合在
一起.

void CxxxDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMultiLanguageDlg)
DDX_Control(pDX, IDC_COMBO1, m_cmbLang);
//}}AFX_DATA_MAP
}

> > 2. 或是物件(CEdit, CButton) vs資源(可以是button, edit....)
> > 假設你有一個CEdit的data member叫m_edtFisrtName,
> > 利用m_edtFisrtName.GetWindowText(strTitle)亦存取資源控制項的文字
> > 前提是你要宣告DDX_Control(...)之類的函式並配合物件函式取值.
> > 3. 利用 GetDlgItemxxx系列的方法(或直接呼叫sdk)存取資料
> > GetDlgItemText顧名思義就是取得對話視窗的某一控制項的文字敘述...
> > ex. GetDlgItemText(IDC_TITLE, strTitle);
> > 這招是前兩式的折衷方案, 不一定需要宣告data member就可以取值;
> > 前提是要知道resource id(IDC_TITLE就是一個名副其實的resource id)

--
包龍星 : 大家聽到了,是他讓打我們才動手的。
師爺 : 這樣的要求,我一輩子都沒聽到過。

--
[m○ Origin: 新竹師院 風之坊﹝bbs.NHCTC.edu.tw﹞From: !211.23.203.218

天涯共此時

unread,
Oct 29, 2004, 7:41:08 PM10/29/04
to

\\\\\\\\\\\\\\\\\\\\\\\\\\\"
※ 引述《mati...@bbs.ee.ttu.edu.tw (快樂)》之銘言:
> > 看一下你的source code, 會有下列的member function...

> > void CxxxDlg::DoDataExchange(CDataExchange* pDX)
> > {
> > CDialog::DoDataExchange(pDX);
> > //{{AFX_DATA_MAP(CMultiLanguageDlg)
> > DDX_Text(pDX, IDC_TITLE, m_strFirstName);
> > //}}AFX_DATA_MAP
> > }
> > UpdateData(TRUE)用來更新Resource ID (IDC_TITLE)跟變數 m_strFirstName
> > 之中的資料傳遞, 也就是說, 你的控制項(如Edit, Button)上的如果有寫什麼
> > 字, 它會經由UpdateData(TRUE) 的呼叫, 把字串值傳給 m_strFirstName變數.
> > UpdateData(FALSE)則用於解除這樣的效用.
> 那解除有什麼作用嗎?
> (釋放記憶體空間?加快程式執行速度?)
> 如小弟之前po出來的link中的程式~
> 它是要user不斷輸入人名~那解除與否對這個程式會有影響嗎?

解除就無法立即更新m_strFirstName的值

> (剛剛試過,可以run,但看不出有什麼不同~)
> (真的很謝謝這個大大不厭其煩的回答,小弟真的是受益良多~*^^*)

--
包龍星 : 大家聽到了,是他讓打我們才動手的。
師爺 : 這樣的要求,我一輩子都沒聽到過。

--
[m○ Origin: 新竹師院 風之坊﹝bbs.NHCTC.edu.tw﹞From: !211.74.119.195

0 new messages