MFC一些語法筆記

2021-08-09 02:18:12 字數 2698 閱讀 8349

1.類似c語言sprintf的用法

cstring str1;

str1.format(_t("id是:%d"),i);

把變數i的值變成字串;

_t是乙個巨集,作用是讓你的程式支援unicode編碼。

因為windows使用兩種

字符集ansi和unicode,

前者就是通常使用的單

位元組方式,

但這種方式處理像中文這樣的雙位元組

字元不方便,

容易出現半個漢字的情況。

而後者是雙位元組方式,方便處理雙位元組字元。

char *str和char str="hellow";

* 符號作用就是指標,*str就是指向char陣列str的首位址的指標,

str就是字元陣列,陣列中的元素是字元;&str得到的值實際上就是str[0]的位址,  

所以我們稱「&」為取址符;

在函式呼叫時我們作為形參呼叫

void main()

void temp(char *p)

我理解 char str=「hellow」,等效於 char *str=「hellow」的在操作上一樣

乙個程式設計的小技巧在自己的exe生成的同時生成乙個工作台程式很有利於除錯程式使用。就是在初始化程式函式中新增如下**

#include #include void initconsole()  

就可以愉快的使用 cout和printf等函式了

check box控制項用法

在介面設計中,我們經常會用到check box這個控制項,check box 的使用方法與radio button 的用法相似,但比它要簡單得多。

一、設定check box為 選中狀態

((cbutton*)getdlgitem(id號))->setcheck(true);

(setcheck(false)) 為不選中,如果想初始化為選中狀態,則在initdlg函式中加入下面這段語句。

( (cbutton*)getdlgitem(idc_radio1))->setcheck(true);

二、檢查check box是否為選中狀態

可使用getcheck()這個函式,如下:

if(bst_checked==((cbutton*)getdlgitem(idc_radio1))->getcheck()) 判斷是否選中;

if(bst_unchecked==((cbutton*)getdlgitem(idc_radio3))->getcheck()) 判斷是否未選中。

cstring string char* 之間相互轉換

1 string to cstring   

cstring.format("%s",string.c_str()); 

2 cstring to string

string str(cstring.getbuffer(str.getlength()));

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 cstring to char *

strcpy(char,cstring,sizeof(char));

6 char * to cstring

cstring.format("%s",char*);

cstring的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *轉換時,要把char定義成為const char*,這樣是最安全的。

以上函式unicode編碼也沒問題:

unicode下照用,加個_t()巨集就行了,像這樣子_t("%s")

補充:

cstring 可能是 cstringw/cstringa,在與 string 轉換時,如果是 cstringw,還涉及編碼轉換問題。下面以 cstringa 來說明。

1 string to cstring  

cstring.format("%s",string.c_str());

cstringa = string.c_str() 就可以了

2 cstring to string

string str(cstring.getbuffer(str.getlength()));

getbuffer 有引數的話,可能導致內部的分配空間動作,要進行後續 releasebuffer 操作。

string = cstringa

string = cstringa.getbuffer();

3 string to char *

char *p=string.c_str();

4 char * to string

string str(char*);

5 cstring to char *

strcpy(char 

*,cstring

,sizeof(char));

按照 3 風格,這裡應該 char *  = cstringa; 或者 char *p = cstringa.getbuffer();

6 char * to cstring

cstringa = char * 就可以了

JSP一些簡單語法筆記(一)

scriptlet 區 變數宣告成區域性變數 不能在裡面寫方法 伺服器端執行 declaration 變數轉換成成員變數 特殊需要外,盡量不要使用 accesscount out.println accesscount directive 編譯指令相當於在編譯期間的命令 格式 directive 屬...

MFC一些理解

重點 應用程式啟動機制。視窗處理。動態建立,動態判斷。序列化。訊息對映。視窗引數初始化 defwindowproc被註冊成視窗處理函式 設定了新建立的hook 用於視窗建立時先呼叫hook函式 將視窗物件和視窗控制代碼做對映關係儲存。建立視窗 解除安裝hook messagemap儲存了父類全域性函...

R一些語法

1.讀檔案 讀csv檔案 u read.csv g jd data data jdata user.csv header true 不加header預設false,即就是資料框的列名為v1,v2.header true,第一列為列名2.隨機抽樣 sample x,size,replace false...