在使用MFC的Edit Control等控制項時可能你會遇到這樣的問題:error:“DDX_Control”:
不能將參數 3 從“int”轉換為“CWnd &”或error:“DDX_Control”: 不能將參數 3 從“CString”轉換為“CWnd &”.這是什麼原因呢?
一.淺析
查看資料和搜尋後,我也看到了一些具體分析:
在一個對話方塊程式裡,有個按鈕IDC_BUTTON_OK。Ctrl+w (VC6.0)或Ctrl+Shift+X進入類別檢視,在member variables頁雙擊列表裡的IDC_BUTTON_OK就會有個對話方塊出來,中間的這個組合框裡一般列出2種:
一種是資料型比如CString和int;另一種就是控制項型CButton。
前者資料型是該控制項的標題內容,後者就是控制項本身綁定的一個對象。DDX_Contral是後者型,_Control是控制項類型,_TEXT是資料型。修改如下:( DDX_函數是資料交換函數)
DDX_Control(pDX, IDC_BUTTON1, m_Botton1);改成
DDX_Text(pDX,IDC_BUTTON1,m_Botton1);(或刪除該語句)
二.深度分析
它出現該錯誤的原因是什麼呢?
我發現在類嚮導添加控制項變數int CString時(Ctrl+Shitf+X)
應該先選擇Value類別,而不是Control強制該變數類型為int型,然後在變數類型中選擇int、CString型.在自訂變數名.這樣強制的轉換就會造成具體的錯誤.
如所示添加一個Edit Control(編輯框)控制項,同時定義該控制項為CString類型,變數名為m_edit5,在類別中有Control和Value,選擇Value。
同時好像在Button控制項中我嘗試選擇Value,好像只有Control類別,因為有的控制項很特殊,如按鈕,它本身只能定義為Button類型,具體控制項具體分析。
希望上面的文章能協助大家,高手略過。同時淺析中參考了下面部落格的內容http://hi.baidu.com/wangguang246/item/8d4cad9f03625bdf1e427128,深度分析是自己的見解,錯誤的地方見諒!
(2013-6-8-夜2點 by:Eastmout)