閱讀263 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MFC Edit控件 error:“DDX_Control”: 不能將參數 3 從“int”轉換為“CWnd &”

在使用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類型,具體控件具體分析。
希望上麵的文章能幫助大家,高手略過。同時淺析中參考了下麵博客的內容:
https://hi.baidu.com/wangguang246/item/8d4cad9f03625bdf1e427128
深度分析是自己的見解,錯誤的地方見諒!
(2013-6-8-夜2點 by:Eastmout)

 

最後更新:2017-04-03 18:52:09

  上一篇:go Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:掃描指定文件
  下一篇:go 零零總總的麵試題(2)