看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 問題(Question): 最近在做使用別人的library去開發,最近遇到一個問題 有使用到library去定義的參數,宣告如下- AAA_CString test1; 接著想在MFC工具列下創造一個edit control與變數,去接test1這個參數 後來不管怎麼試,都出現無法把AAA_CString轉換成CString。想請問該怎麼去轉換呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.193.205 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432047679.A.610.html
Feis: 等下~ typedef 在哪? @@ 05/19 23:02
kwpn: 說好的typedef咧 05/19 23:09
※ 編輯: williamsm (1.164.210.161), 05/20/2015 22:28:40
sd016808: 看不太懂你想問的問題 大概猜測你是想用別人重新包裝過 05/20 23:27
sd016808: 的控件? 那就在控件加入變數的地方 把class改成別人包 05/20 23:27
sd016808: 好的類別就好了吧? 05/20 23:27
補充,實際宣告如下- typedef char A_CHAR; typedef A_CHAR* A_STRING; 在MFC下工具箱加了edit control 目的是希望可以在EDIT CONTROL下輸入ip(或其他參數),丟給宣告成A_STRING的變數用 接著把EDIT CONTROL的變數類型定義為A_STRING、變數名稱設為test1 去compile後出現如下error訊息 [error C2664: 'void DDX_Control(CDataExchange *,int,CWnd &)' : 無法將引數 3 從 'CHR_STRING' 轉換為 'CWnd &'] 想請教該怎麼定義才會正確使用呢?謝謝 ※ 編輯: williamsm (1.164.210.161), 05/21/2015 00:16:37
TobyH4cker: 完全是parameter弄錯了吧 05/22
自己回一下自己的解法,把CString轉成被typedef宣告後的宣告類型 接著就直接引用它,我的說法可能有點不太精準,請參考下面 CString A; int sizeOfA = (A.GetLength() + 1); LPTSTR pStrTmp1 = new TCHAR[sizeOfSA]; _tcscpy_s(pStrTmp1, sizeOfA, A); wcstombs_s(&i1, str1, 16, pStrTmp1, 16); 接著str1就可以丟到帶有被typedef的參數裡,給function引用 若有大大有更好的做法再請指教唷 ※ 編輯: williamsm (36.229.162.35), 05/25/2015 22:37:11
sd016808: 所以你只是要問CString 怎麼轉成char*嗎? 如果只是要這 05/26 23:37
sd016808: 樣 GetBuffer就可以了吧? 05/26 23:38