2010年9月29日 星期三

為什麼使用 BOOL 而非 bool

這是我剛接觸用 C++/MFC 開發時看到的第一個疑惑,
在 platform SDK/include/windef.h 裡面有一行這樣的定義

2010年9月28日 星期二

如何獲得 GetLastError() 的文字訊息

在撰寫軟體時常常會接獲錯誤訊息,或在操作某些動作時發現錯誤,
也經常利用 ::GetLastError(); 這支 Windows API 來獲取錯誤代碼,
但是這支API回報的是 DWORD 型態,想知道得更詳細往往要再上網搜尋一番,
當然也有方法可以取得文字訊息,簡單的範例如下。

快速的判斷整數是否為奇數

從這裡看到的方法,覺得相當不錯所以留作備份一下。

CString 與常用型態互轉

因為 C++ 的型態太多了,沒有常用真的會忘記,記下來,
但由於真的太多了,並不是很完整,之後有碰到會再補上來。

利用 memory dc 解決畫面閃爍問題

重繪時要避免畫面閃爍可以使用 Invalidate(FALSE);
使重繪時不做清除底圖的動作,減少閃爍的情況,

2010年9月27日 星期一

利用 SetWindowRgn 製作非矩型視窗

在 XP 預設的外觀樣式下,正常的視窗或對話框是上方頂點圓圓的配下方直角,
若有需要做出非預設樣式的視窗時,可以利用 CWnd::SetWindowRgn() 這個 function
這可以用來指定視窗的全部範圍與型狀,
在型狀之外的部份會自動為我們加上背景的遮罩。

client area 與 WM_NCHITTEST

在 MFC 中若要製作不同於 Windows 風格的視窗時,
往往會將 Dialog 的 Border 屬性設為 None,
然後利用自己畫背景的方式製作美美的視窗、對話框。

2010年9月24日 星期五

Invalidate function 的注意事項

MFC 的 CWnd 中有個 member function 叫作 Invalidate();

使用 ISAXContentHandler 解讀 XML 的注意事項

在 C++ 底下要解讀 XML 檔案常用的有兩個方法,一是使用 IE6 就有附加的 CLSID_DOMDocument30 元件,二是使用較底層的 Windows API ISAXContentHandler,兩都都需要 include msxml2.h 檔案

2010年9月23日 星期四

Java 的 method 參數

最早之前工作是寫 C# 與 VB.Net,後來轉寫 C++ 以後很習慣清楚的標示 function 參數是傳值、傳址或傳參考,最近寫起 Java 發現 Java 和 C# 對於 method 參數是傳值還是傳參考是差不多的觀念,參數簡單的分為兩類

2010年9月16日 星期四

Android Activity 的啟動與結束

撰寫 Android 專案時發生一些在離開應用程式時 crash 的狀況,反覆檢查 Activity 的 onDestroy() 就是看不出什麼異樣,後來 TRACE 才發現問題出在 onPause() 裡面的一行 code,在此筆記一下 Activity 啟動與結束的流程

2010年9月12日 星期日

多核與多緒…

很久前曾經看過一篇文章提供 CPU 多核的發展目的,有興趣可以參考這裡,底下還有中文翻譯,相當詳細

2010年9月11日 星期六

vector 內要放值還是放址?

vector 是 STL 其中之一非常好用的容器,用來替代1維的陣列管理物件是很常用的寫法,有一陣子我在看公司前輩寫的 code 發現一個怪怪的地方,那是一個跑在 Windows Mobile 平台的軟體,裡面有一些大概就是這樣子的一段 code

2010年9月10日 星期五

CFile 的注意事項

以下是我在使用 CFile 時曾經發生不順利的地方,雖然網路上查 CFile 的個類方法太方便了,但還是記下來備忘。

2010年9月9日 星期四

protected 繼承的使用時機

在此篇中有提到 private 繼承的重點

http://ascii-iicsa.blogspot.com/2010/09/is-ahas.html

軟體缺少 d3dx9_xx.dll 的問題

DirectX 在版本轉換時真的是個麻煩的東西,曾經發生一個狀況,將原本正常的專案由 VS2003 轉至 2008 以後,原本利用 VS2003 包出來正常的檔案,改用 VS2008 編以後自已用起來正常,給其他人用卻出問題,在其他台執行時跳出缺少 d3dx9_41.dll 的錯誤。

2010年9月7日 星期二

2010年9月6日 星期一

has-a 的 private 繼承觀念

以下這段程式使用了 public 繼承表示一種 is-a 的關係,吉娃娃繼承了狗,所以吉娃娃是狗的一種。

單一繼承的種類

從事編程的工作也有兩年多了,類別繼承 10 次有 9 次是使用公用繼承,也就是使用 public 關鍵字的繼承,原因無他,純粹是因為 public 繼承最方便。