原创 CString的部分實現剖析
一、CString初探: 在CString的實現中,其最基礎的類結構如下: CString其實只有一個數據成員m_pszData,這個成員指向了字符串的首地址。但在MFC的具體實現中,
原创 C++運算符重載需要注意的地方
有時候自己寫一個類,需要重載運算符,但對於一些操作符(如==、<、>等),可以在類裏寫,也可以在類外寫。那麼 C++ 編譯器會去怎麼調用呢? 首先,我們知道,“重載” 機制可以允許多個函數有相同的函數名,但參數列表必須不同。C++編譯器
原创 C++工具箱(二)——定時器
有時候我們需要用到定時器這樣一個東西,但是我們如果去一個窗口裏面 SetTimer,但我們又需要在一個非 UI 類(線程)裏要用計時器,那麼解耦就沒有辦法實現了。有沒有更好的辦法呢? 答案是肯定的,我看可以寫一個單件定時器類,用來管理定
原创 事件對象Event的使用
最近使用到Event,做一下總結。 1、對象的創建: 創建了一個匿名的初始狀態爲“無信號”狀態的Event。 HANDLE _hEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); 2
原创 SQLite的使用
最近頻繁使用到 SQLite,越來越發現該數據庫的好用。SQLite 是一款開源、輕量、本地化存儲、功能強大的數據庫,由於它的這些特性,使得人們在項目中廣泛應用。 首先,你可能要去www.sqlite.org去下載一份 SQLite,可
原创 Windows下遍歷文件目錄
最近用到遍歷文件目錄,總結一下: #include <Windows.h> WIN32_FIND_DATA fndData; HANDLE hFnd = INVALID_HANDLE_VALUE; hFnd = ::FindFirs
原创 C++工具箱(三)——動畫類之基類
OK,我們已經討論了單件和定時器了,該來點真格的了。這次我們來看看如何通過前面所述的定時器實現動畫。我目前想到的動畫有大小更改、Alpha 透明度更改、窗口位置更改等幾種,後續會逐步加上。 我們先來思考動畫的實質。動畫其實就是通過定時器
原创 獲取進程啓動時間
我們有時候通過測試一個程序的啓動時間來評估程序的性能,那麼該怎麼辦呢?現在提出兩種辦法,各有優劣,請酌情采納。 1、通過一個輔助程序調用CreateProcess 啓動被測程序,在 CreateProcess命令行參數中傳遞當前Tick
原创 C++的兩個細節
細節總是煩人的,但又有人說了:“細節決定成敗”。所以,只有將這些細節總結出來了。 細節問題總是這樣:你明明知道是這樣做,但又有點不太確定,需要回去翻一遍才能繼續。今天遇到兩個: 1、C++ 浮點數取整: #include <cmath
原创 由C++絕對值函數想到的
這些天恰好要用到一個絕對值的函數。好吧,你會說這個直接用std::abs不就行了嗎?對的,一開始我也是這樣用的。但是如果去求最小的那個int的值的絕對值,就會導致輸出不正確。如: int min_int = -214748
原创 離線安裝 Android Studio 更新
離線安裝 Android Studio 更新 1、在線更新 隨着 Android Studio 的越來越完善與流行,無論從功能性,還是性能上,它正在成爲廣大 Android 開發者的首選。但是因爲總所周知牆的原因
原创 反彙編系列(二)——堆棧篇
要反彙編程序,不可避免要接觸到堆棧,你首先得會查看堆棧,知道堆棧在某一時刻的確切內容。首先,我們講述一些與堆棧相關的基礎知識。 1、堆棧基礎 彙編語言中的“堆棧”的含義與數據結構中堆棧的含義不同,儘管從操作上來說,它們都
原创 反彙編系列(三)——函數篇
彙編中的函數調用我們需要着重講述一下。一般我們用 call 發起調用,最後需要用 ret/retn/retf 來返回。我們逐個來看彙編中的函數調用。 1、相關指令 call ADDRESS:發起調用,根據 ADDRESS 的地址決定是
原创 Lua與C/C++交互——C/C++調用Lua腳本
Lua與C/C++交互——C/C++調用Lua腳本