原创 MFC 消息發送機制

CWnd::SendMessage(UINT message, WPARAM wParam, LPARAM lParam) 根據普遍的定義是SendMessage直到消息被處理完畢後才返回,而PostMessage是把一條消息投放到創建h

原创 C++兩個項目之間相互引用的方法

實際工程中有時可能會遇到一個項目中使用了另一個項目中的函數,那麼我們直接添加相關的引用即可。 但是如果兩個項目A,B之間相互引用,且A項目編譯在B項目之前,直接相互引用就會導致混亂的發生。 此時可以採用函數指針的方式,在A中聲明函數指針,

原创 MFC 窗體注意項

1.想使用CListCtrl::GetHeaderCtrl()前請注意你是否已經把ListCtrl設置爲Report類型,否則將導致取出的指針爲空。(另外InsertColumn也類似。) 2. 如果自己重載了OnInitDialog函

原创 MFC 控件屬性事件框顯示空白

從7月份到現在爲止,這個bug一共就遇到過兩次,但也是挺麻煩。 一旦出現,所有的控件就無法在屬性事件欄裏面添加新的事件了,顯示一片空白。 google上也查了一下,大致上說的都沒有很好的解決方案。 目前暫且有兩種處理辦法: 1.直接自己手

原创 c++ memset與崩潰

c++中提供了函數memset,主要用於一段內存內容的初始化(基於字節爲單位)。 參數1爲進行初始化的內存首地址,參數2爲初始化的值(雖然是個int但實際只能用0~255,因爲是按字節初始化),參數3爲初始化的內存大小(字節爲單位)。 比

原创 虛函數-實現

C++中面向對象的三大特性之一:多態,主要由虛函數支撐實現。 其表現形式可以是父類指針指向子類實例,當使用該指針調用虛函數時,程序會自動調用子類同名虛函數(如果子類有實現)。可用於不同模塊之間的解耦,比較常見於各種庫的接口文件(一般均提供

原创 linux下的c++編譯

Linux下的c++編譯1. 關於GCC1.1 使用g++編譯cpp文件1.2 使用makefile編譯工程1.3 通過CMakeLists.txt生成makefileEnd 1. 關於GCC 目前在linux上,C++的編譯主要

原创 sqlite 修復 database disk image is malformed 問題

這個問題是在解決客戶工程的時候遇到的。 在網上的解決方法大多一致,就是先在舊數據庫中導出sql文件再導入一個新數據庫中。 暫時沒有找到在圖形界面下的導入導出選項,所以先用着命令行了。 SQLite官網這裏可以下載對應的命令行窗口工具,文件

原创 sqlite查詢區分大小寫

雖然網上說sqlite的查詢默認是區分大小寫的。 但有時它的確不區分大小寫(可能我在用假的sqlite)。 那就甭管它了,用 PRAGMA case_sensitive_like =0;來解決這個問題吧。 當設置值爲0時查詢大小寫不敏感

原创 ObjectArx 窗體顯示錯亂

因爲基於CAD平臺來進行二次開發,所以一般在普通的環境中能正常運行的,你在CAD這邊跑起來可能就比較奇怪。 其中之一就是窗體顯示。當你需要彈框顯示一個新的窗體時,需要提前聲明一個變量CAcModuleResourceOverride XX

原创 VS 調試時“還沒有爲該文檔加載任何符號”

有的時候調試會出現這種問題: 然後斷點就不會中斷了。 解決方案: 比較常見的是 1.工具->選項->調試->常規->要求源文件與原始版本完全匹配的勾取消。 2.嘗試重新編譯項目 , 因爲項目未重新編譯過的話其中更改的代碼就不會生效(

原创 子類虛函數調用無效

這種情況出現的比較少,從工作到現在將近一年時間就遇到兩次。 主要表現爲子類重載了父類的虛函數後,使用正常方法(即父類指針指向子類對象後調用該虛函數),結果調用的仍爲父類的函數。 一開始以爲是指針指向有問題,或者虛函數的聲明名稱寫錯了這種小

原创 CString轉char*/wchar_t* 轉 char*

因爲程序中需要把CString轉爲char*來使用,沒想到轉換的套路挺深所以也順便記錄一下。 一般來說普通的情況只需要這樣就能轉換: CString strFilepath = _T("d:\\新建文件夾"); char *pFil

原创 C++關鍵字 explicit

之前在項目中有看到過explicit關鍵字,不過不清楚是什麼作用。 網上大致查了一下。 首先它僅限於描述構造函數,然後它的作用是避免隱式調用構造函數。 什麼時候會觸發隱式調用呢? 舉個栗子: //測試類Test class Tes

原创 C++ 兩個類相互引用

實際工程中兩個類相互引用的情況還是比較多的,其中大致分爲兩種: 1.同一項目下相互引用。 2.不同項目間相互引用。 情況1: 只需要相互包含頭文件就行了,但是要避免重複包含,用#pragma once或者#ifndef都可以。 如果你編譯