第一次做mfc軟體,用到的相關知識記錄。
1.控制項文字:
cstring str;
getdlgitemtext(idc_***,str); //獲得控制項文字
setdlgitemtext(idc_***,str); //設定控制項文字
另外還能通過設定控制項變數來獲得文字值:
updatedata(true) //從控制項獲取值
m_edit1 = 0; //初始化m_edit1 ,缺省會呼叫updatedata(false),將m_edit1 值傳遞給控制項顯示。賦值後需手動呼叫該函式。
另外還有其他多種方法操作文字,未使用過暫不記錄。
2.check box
m_check1 = getdlgitem(idc_check_***)->getcheck(); //m_check1 為選框變數,為嘗試值是否會直接變化而不需呼叫函式賦值。
getdlgitem(idc_
check_***
)->
setcheck(0);
3.edit文字框
edit可在屬性視窗設定多行,自動換行,垂直、水平滾動條。
m_edit.linescroll(m_edit.getlinecount()); //設定垂直滾動總是顯示在最下一行,未嘗試水平滾動條如何設定最右
4.禁用控制項(顯示為灰色)
getdlgitem(idc_***)->enablewindow(false); //解禁為true
5.進製轉換
str.format(l"%c",buf[i]) //將十六進製制轉為char型別(ascii碼) 0x30 -> '0'
str.format(l"%02x",buf[i]) //將十六進製制儲存為cstring型別(ascii碼) 0xaa -> 'aa'
char ch = (char)85 //十進位制轉字元
char ch = (char)0x55 //十六進製制轉字元
儲存為txt檔案需寫入ascii碼,如『0』需以0x30寫入才會在txt中顯示為0,否則將以ascii碼表中的0儲存,顯示亂碼
從文字框獲得文字內容再儲存如txt中長度需為2倍,估計是因為型別所佔位元組數不同造成,未深究。
6.檔案讀寫
這次使用的是mfc的api函式,c和c++有其他的檔案操作函式。
cfile file.open(path, mode);
file.write(str, str.getlength());
file.close();
7.mfc的自定義訊息
(1)定義訊息:
#define wm_mymesg wm_user + n
(2)在標頭檔案宣告訊息響應函式
afx_msg void onmymesg()
(3)新增對映 //xx預設為工程名
begin_message_map(cxxdlg, cdialogex)
on_wm_mymesg(wm_mymesg, &cxxdlg::onmymesg())
end_message_map()
(4)在原始檔中實現響應函式
8.定時器ontimer需新增
begin_message_map(cxxdlg, cdialogex)
on_wm_timer()
end_message_map()
否則ontimer函式無法響應settimer函式
9.strlen()
strlen計算乙個指標所指向的陣列長度時,遇到陣列元素為0返回,即認為到了尾端,不再計算後續是否還存在元素。
不知道該如何解決這一問題,目前設想是傳過來的資料某一位中包含所傳資料長度,可以手動讀取該長度來解決。
目前想到的就這些,之後再繼續補充遇到的其他問題。關於串列埠的簡單使用之後單獨再寫一篇儲存。
MFC相關知識點
本部落格內容 一 mfc訊息對映機制 二 mfc單文件框架講述 三 mfc的基本類有哪些 四 windows程式執行 五 sendmessage 和postmessage的異同 參考 mfc是windows下的乙個類庫,主要是封裝了win32 api函式,並設計了一套方便的訊息對映機制。具體實現方法...
知識點記錄
1 jensen不等式 jensen不等式表述如下 如果f是凸函式,x是隨機變數,那麼 特別地,如果f是嚴格凸函式,那麼 e f x f e x 當且僅當p x e x 1,也就是說x是常量。2 unet結構,卷積的三種模式 full,same,valid 其實這三種不同模式是對卷積核移動範圍的不同...
記錄知識點
03d 輸出三位寬度的整數,不足時前補0 3d 輸出三位寬度的整數,不足時後補空格 3d 輸出三位寬度的整數,不足時前補空格 d 輸出整數 未指定寬度,以實際寬度輸出 floor x 為1的值範圍是 1,2 而floor x 0.5 為1的範圍是 0.5,1.5 四捨五入 c語言函式總結大全 例如 ...