最近寫點東西,發現果斷還是把老師教的都還回去了.......額,但是在我敲鍵盤的過程中,又汲取回來啦。
總結一下最近犯的錯誤吧,給自己提個醒,希望不要再犯了~
1.用控制項變數獲取輸入的文字,出錯。
因為函式挺長,所以好一會都沒發現問題在**。後來利用「注釋法」(個人覺得好實用的方法~~),找到了問題:
m_ededit.getwindowtext(str);
錯誤原因在於,window不止乙個,所以編譯鏈結是沒有問題的,但是執行獲取文字時,就會出現錯誤!
修改:getdlgitem(idc_***)->getwindowtext(str);
首先根據id得到控制項,獲取該控制項上的文字。這樣就不會出錯啦!
這個問題的本質原因是沒有將變數與控制項關聯,這個有可能是編碼者自定義的控制項變數,例如:cedit m_ededit; 然後直接開始使用。
所以也可以在void cclayerdlg::dodataexchange(cdataexchange* pdx)中新增:ddx_control(pdx, idc_***, m_ededit);
2.字元間的轉換
這個應該檢討一下,之前只覺得是小細節,沒有太多的注意。真正使用的時候才發現原來裡面蠻有學問的,所以特意搜了一些資料,總結的挺詳細的。我以身試法的說說看,希望能夠盡量通俗。
(1)將wstring轉換為cstring
源**:
void c***view::oncurname()
{// todo: 在此新增命令處理程式**
c***doc* pdoc = getdocument();
std::wstring wstrname;
wstrname= pdoc->m_ap->getname();
cstring str;
str.format(_t("名稱:%s"),wstrname.c_str());//
利用c_str()函式進行轉換
afxmessagebox(str);
(2)_t的關鍵性作用
uint curid;
curid = pdoc->m_ap->getid();
cstring str;
str.format(_t("id號是:%u"),curid);//此處如果不加_t就會出錯
afxmessagebox(str);
檢視專案的屬性會發現:
uincode字符集進行解碼時,_t必須加上。如果是其他,則_t可有可無。(此處關於_t巨集會再學習,再解釋)
(3)將cstring轉換為wstring
m_wtrname = str.allocsysstring(); //同樣也是利用函式來實現
最近幾天寫儲存過程,總結一下零碎知識
一 關於儲存過程中的表 儲存過程中可以建立兩類表,臨時表和實體表,其建立方式如下 1 臨時表 create table table id int identity 1,1 列名1 int,列名2 varchar 100 create table table a 其中,乙個 表示是本地臨時表 區域性臨...
這幾天學習XSLT , 總結一下難點。
1 xslt 在表單中給input屬性value賦值 2 xslt 在js中使用 var name 20rel boook name 3 xslt 路徑問題 例如 xml文件中的值要在js中使用 xml文件 e coredumpout js中要使用 dt cdf input file 的name屬性...
總結一下這幾天操作符的學習心得
1.關於map的operator 原形為 val type operator const key type key a 返回val type說明,對於map中的val type,通過 下標 訪問,具有所有的write 和 read 許可權。b 原型後面沒有寫const,說明必須通過非const的物件...