自用MFC知識點記錄

2021-07-27 22:00:51 字數 1880 閱讀 3259

第一次做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語言函式總結大全 例如 ...