記錄mfc開發過程中遇到問題和所採用的方法
當你宣告了如下結構體:
typedef struct _tagcstringarray
cstringarray, *pcstringarray;
而後我們在使用該結構體時,往往需要對其進行初始化
cstringarray csastringarray;
memset(&csastringarray, 0, sizeof(cstringarray ));
以上初始化會導致cstringarray的this指標被置為null,往後對結構體中castringarray的使用都將導致程式崩潰,為了解決這個問題我們應避開結構體初始化時對cstringarray的初始化,至於不初始化結構體中的cstringarray變數會不會在使用上出現異常,顯然不會,因為cstringarray自己帶有建構函式,能為自己初始化;避開初始化cstringarray的初始化可以採用巢狀結構體,示例如下:
typedef struct _tagcstringarray
defdata;
cstringarray castringarray;
}cstringarray, *pcstringarray;
將需要初始化的變數在封裝乙個結構體,這樣我們初始化的時候可以這樣寫
cstringarray csastringarray;
memset(&csastringarray.defdata, 0, sizeof(csastringarray.defdata));
這樣在初始化時就不會對cstringarray產生影響。
MFC函式積累
1.waitforsingleobject dword winapi waitforsingleobject in handle hhandle,in dword dwmilliseconds waitforsingleobject函式用來 檢測hhandle事件的訊號狀態 在某一線程中呼叫該函式時...
android 開發積累
android theme android style theme.notitlebar 2.openorcreatedatabase context.openorcreatedatabase 與 sqlitedatabase.openorcreatedatabase本質上完成的功能都一樣,cont...
專案開發積累
一 開發優化 1 盡量做到不要在迴圈中 去訪問資料庫中的東西或者向資料庫中新增資料 迴圈中盡量做到處理邏輯的單一性或簡潔性,最大限度的提高系統的效能 2 儘量減少迴圈中或者迴圈體中不必要的迴圈計算或者不相關的計算以及操作,例如 for int i 0 i for int i 0 i 3 巢狀迴圈,如...