原创 auto_ptr與auto_ptr_ref

今天我在看 The C++ Standard Library 的時候,總覺的上面講的關於auto_ptr_ref的問題沒有說清楚,查了網上的資料發現也沒有說清。 也許還有很多朋友像我一樣對此存在疑問。其實,這個問題有沒有弄清楚,對實際編程

原创 子類化(SubclassWindow)窗體

窗口子類化的作用 窗口子類化技術最大的特點就是能夠截取Windows的消息。一旦用戶自定義的窗口函數截取了傳向原窗口函數的消息,就可以對被截取的消息進行如下處理: 將其傳給原來的窗口函數。這是對大多數消息應該採取的措施,因爲子類通常只對

原创 vc中操作Xml--使用CMarkup類

DotNet中使用xml相對比較輕鬆,在vc中操作xml,有些繁瑣。最近在網絡上得知CMarkup比較好用,於是試了下,還好,就把部分例子寫出來。以後有時間的話,再寫清楚點。   //----------UserInfo.xml-----

原创 私有構造函數,私有析構函數

很多情況下要求當前的程序中只有一個object。例如一個程序只有一個和數據庫的連接,只有一個鼠標的object。通常我們都將構造函數的聲明置於public區段,假如我們將其放入private區段中會發生什麼樣的後果?這意味着什麼?    

原创 ATL---style模板

以下爲MFC程序員的WTL指南(2)中部分內容,對此表示對作者和譯者的感謝! ATL-style 模板    即使你能夠毫不費力地閱讀C++的模板類代碼,仍然有兩件事可能會使你有些頭暈,以下面這個類的定義爲例: class CMyWnd

原创 C++中指向成員的指針

C++中指向成員的指針   一個類有兩種基本的成員:函數成員和數據成員。同樣的,指向成員的指針也有兩種:指向函數成員的指針和指向數據成員的指針。後則其實並不常用,因爲類一般是不含有公共數據成員的,僅當用在繼承用C寫的代碼時協調結構(str

原创 二維數組

T a[M][N]   a: 表達式中的a的類型轉換爲T ( * )[N],代表數組的首地址; &a:是一個指向二維數組對象的指針,類型爲T ( * )[M][N]。在C標準出現之前,一些早期的實現並不允許&a,因爲這些編譯器認爲此時的a

原创 WTL源碼剖析 --- ATLAPP.H

 ATLAPP.H包含了消息循環類、接口類、和產生應用程序所必需的一些基礎類 定義。        類定義如下:               CmessageFilter 類 --- 用於消息過濾的         Cid

原创 對話框程序更改窗口類名稱

對話框的默認窗口類名“#32770“   以下通過不同方式更改類名稱   1.    打開工程的資源視圖 2.    更改對話框資源的ClassName屬性。有兩種方法: (1) 在需要更改類名的對話框資源上右擊,選擇“屬性”,打開屬性對

原创 __declspec(align(#))

在覈心編程中看到上面這樣的東西,雖然懵懵懂懂知道是與字節對齊相關,   但還是想知道究竟是怎麼回事,順着書中提供的相關網站,看了下資料,   評介僅有的一點英文水平,記錄下來。   align Examples:   下面的一些例子展示了

原创 超類化窗體

超類化概述在MFC中窗體實例對某個窗體句柄超類化後,系統提供了這樣兩種能力:1.我們對該窗體實例調用成員函數將會直接改變相關窗體句柄對應的窗體2.系統傳給相關窗體句柄的消息會先經過該窗體實例的消息映射 我舉一個例子來說明:比如我自己寫了一

原创 pval是int*類型而不是int數組類型的左值----理解

 函數模板 min()的函數參數是一個引用 它指向了一個 Type 類型的數組   template <class Type, int size> Type min( Type (&r_array)[size] ) {

原创 SetWinowPos中參數hWndlnsertAfter

該參數爲當前窗體的前一個窗體   根據使用如果窗體爲對話框,想要將窗體至於最頂層,要使用wndTopMost來設置   如果窗體爲對話框但是不需要指定,也就是可以被其他窗口覆蓋,則可以選擇NULL,這樣他的前一個窗體爲空,也就是不存在。

原创 拷貝構造函數與賦值構造函數

A(const A&);   //默認拷貝構造函數 A& operater = (const A& a);   //默認賦值函數 【弊端】:若類中包含指針成員或引用成員,這兩個默認的函數可能隱含錯誤。 (1)   原有的內存沒有釋放,造成

原创 獲取鼠標消息響應時的座標位置應該注意的幾個宏

今天根據書上的示例程序BlokOut2進行實際操作時,發現了該程序的一個小問題。 該示例程序主要是想告訴讀者,在客戶區操作中的鼠標如果移動到非客戶區外,用SetCapture(hwnd)和ReleaseCapture()兩個函數可以實現