原创 C++設計模式之前言

我個人接觸設計模式的時間較晚,將它們應用在實際項目中也就這一兩年的時間.當時爲了快速的學習掌握設計模式,除了參考GoF的<設計模式>之外,還在網上參看了TerryLee的.NET設計模式系列文章,以及程傑的<大話設計模式>,並利用業餘時間

原创 在Win32工程中使用GdiPlus

在vs直接建立的win32工程裏直接添加GdiPlus的相關支持文件: #include <gidplus.h> using namespace gdiplus; #pragma comment(lib, "gdiplus.lib") 編

原创 完整的位圖文件解析

雲彩掛上的二叉樹 - http://blog.csdn.net/markl22222/archive/2011/04/06/6304318.aspx 與上次簡單的位圖加載不同,這次是完整的位圖格式解析.暫時沒有考慮壓縮格式的位圖. 下面的

原创 獲得位圖非屏蔽色/屏蔽色區域的算法

// 獲得圖片區域 void CImgBitmap::GetImageRgn(CRgn& fulRgn, COLORREF clrTrans /*= RGB(255, 0, 255)*/, BOOL

原创 加載bmp文件

這裏給出的加載方法並沒有考慮圖片文件可能出現的所有情況,只是一個簡單的解析過程. 加載後的HBITMAP指向一個32位DIB(這裏這樣做是爲了統一png/jpg/bmp在加載之後的像素處理與顯示). 代碼如下: FILE* file =

原创 C++設計模式之Singleton(單件/單例)模式

單例模式,顧名思義,此模式下的對象實例永遠只有一個.很多初學者感覺,這個模式的用處不大.但實際上,這個模式應該算是應用得最廣泛的模式之一了. 很多情況下,我們需要考慮單例的實現方式.如全局內存池;全局資源管理器;某個全局的工具類工廠...

原创 一個簡單的RTTI實現

RTTI是"Runtime Type Information"的縮寫,意思是:運行時類型信息.它提供了運行時確定對象類型的方法. 最近在寫的一些東西,不想使用MFC之類的框架,但是卻在很多地方需要根據名稱確定指針的轉換類型或者利用抽象工廠

原创 字符串處理及效果類

////////////////////////////////////////////////////////////////// // StringEffect - 字符串效果 // // Author: 木頭雲 // Blog: h

原创 支持引用計數的智能指針類模板

智能指針算是很多人喜歡思考的一種內存管理方案了...雖然這種方案本身存在一些硬傷,但是在很多需要智能,且使用方式相對較簡單的場合裏應用還是比較多的. 先發一個我最初寫好的版本: //////////////////////////////

原创 文件/目錄刪除函數

// 刪除文件/目錄 BOOL DelPath(LPCSTR lpPath) { // 創建文件對象 SHFILEOPSTRUCT lpsh; ZeroMemory(&lpsh, sizeof(lpsh)); // 調整文件對象

原创 支持類模板的 MFC RTTI 宏

////////////////////////////////////////////////////////////////// // 類模板運行時類信息支持宏定義 #ifdef _AFXDLL #define IMPLEMENT_

原创 一款C++靜態分析工具 —— CppDepend

Wrote by mutouyun. (http://darkc.at/cppdepend/)   去年6月份的時候,CppDepend的一位技術社區經理(technical community manager)突然發郵件聯繫我

原创 使用模板元編程操作類型集合(C++11下的TypeList)

Wrote by mutouyun. (http://darkc.at/cxx-type-list/) 羣裏有個朋友要實現這麼一個功能:如何在編譯期把一個函數類型的參數減少一個。 簡單來說,就是實現下面這個模板: remove_

原创 C++的雜七雜八:如何實現一個簡單的bind

Wrote by mutouyun. (http://orzz.org/cxx-bind/) 這篇文的草稿我是在2014年5月11號開始打的,可是拖拖拉拉直到現在才真正動筆寫,自己對自己也是醉了。。 之所以寫bind而不是什麼其他

原创 如何在C++中獲得完整的類型名稱

Wrote by mutouyun. (http://darkc.at/cxx-get-the-name-of-the-given-type/) 地球人都知道C++裏有一個typeid操作符可以用來獲取一個類型/表達式的名稱: st