在製作多語系的軟體時,可能會碰到各種語言之間因為詞性的關係而造成子句順序不同的情況,這種情況下單純的 String.Formate 函式就顯得使不上力
2013年7月3日 星期三
2013年6月26日 星期三
自訂應用程式中的 WebBrowser 版本
寫 Web 的人都了解,有個讓網頁開發者很困擾的問題,就是各家瀏覽器對 HTML、CSS 的表現不一致,這種現像尤其在微軟的 Internet Explorer 上更明顯,雖然 IE 9、10 已經明顯的趕上其他瀏覽器,但並不是所有的電腦用戶都會理解網頁看起來怪怪的是瀏灠器版本的問題而自行更新瀏覽器。
2013年6月25日 星期二
32-bits、64-bits 作業系統的 Registry 注意事項
在 64-bits 的作業系統下執行 32-bits 的應用程式時,若需要寫入 Registry 時,會發現機碼被作業系統預設寫入 Wow6432Node 的目錄底下,不論是 HKEY_CURRENT_USER 還是 HKEY_LOCAL_MACHINE 皆相同。
2013年6月24日 星期一
自訂應用程式的 UAC 執行層級
在專案屬性中的 "組態屬性、連結器、資訊清單檔、UAC 執行層級" 中共有此 3 種屬性 asInvoker、highestAvailable、requireAdministrator 可以選擇,這三種層級的詳細說明可以參考這裡:Embeds UAC information in manifest
2013年6月23日 星期日
C++ 的 delegate
C++ 是 OOL 沒錯,但卻沒有近代 OOL 常用到的 delegate 語法,這導致有些 Delegation Pattern 在 C++ 上面難以實作得很到位,蠻多文章都會示範如何利用 Interface 來模擬 Delegation Pattern 的方式,但還是有不少令人看起來覺得怪怪的程式碼,前陣子在看一個 OpenSource 專案,名叫 FastDelegate
2013年4月20日 星期六
原來對話框置中不用自己寫
之前如果有需要開啟自己另外製作的對話框,我常常都會加上一個 Function 讓這個對話框被 DoModal 後可以自行將位置調整到開啟它的母視窗的中間位置,會這麼做是因為在視窗屬性中設定 Center 為 True 是讓對話框出現在螢幕的正中間,而不是母視窗的正中間…
2013年3月6日 星期三
SetRegistryKey
今天在掃某個 MFC 的專案,注意到有一個叫 SetRegistryKey 的函式,一看到時遲疑了一下,想到其實就在新建立的專案中也可以看到這行,這才發現自己原來不認識,也從來沒去看一下這行 Code 是做什麼的。
2012年10月24日 星期三
字串比較規則
在應用程式中,若可條列出來的資料量不少,通常會幫用戶做排序的動作,
如果是以字串比對排序大小的方式常常會使用 CString.Compare()
但 CString.Compare() 比對大小時,規則是以 Unicode 來比較兩個字串的大小,
在這種情況下,很有可能會發生一種不直覺的現像如下
如果是以字串比對排序大小的方式常常會使用 CString.Compare()
但 CString.Compare() 比對大小時,規則是以 Unicode 來比較兩個字串的大小,
在這種情況下,很有可能會發生一種不直覺的現像如下
2012年5月31日 星期四
2011年5月13日 星期五
2011年2月14日 星期一
2010年10月1日 星期五
mouse leave 與 mouse event track
在 C++/MFC 中雖然有 MouseLeave 的事件可以選擇,
但選了卻沒有反應,原因是必須加上 Track 追蹤滑鼠,
以下是在 MFC 上實作 Mouse Leave 和 Mouse Over 的簡單範例。
但選了卻沒有反應,原因是必須加上 Track 追蹤滑鼠,
以下是在 MFC 上實作 Mouse Leave 和 Mouse Over 的簡單範例。
標籤:
cpp,
mfc,
windows api
2010年9月28日 星期二
如何獲得 GetLastError() 的文字訊息
在撰寫軟體時常常會接獲錯誤訊息,或在操作某些動作時發現錯誤,
也經常利用 ::GetLastError(); 這支 Windows API 來獲取錯誤代碼,
但是這支API回報的是 DWORD 型態,想知道得更詳細往往要再上網搜尋一番,
當然也有方法可以取得文字訊息,簡單的範例如下。
也經常利用 ::GetLastError(); 這支 Windows API 來獲取錯誤代碼,
但是這支API回報的是 DWORD 型態,想知道得更詳細往往要再上網搜尋一番,
當然也有方法可以取得文字訊息,簡單的範例如下。
標籤:
cpp,
mfc,
windows api
利用 memory dc 解決畫面閃爍問題
重繪時要避免畫面閃爍可以使用 Invalidate(FALSE);
使重繪時不做清除底圖的動作,減少閃爍的情況,
使重繪時不做清除底圖的動作,減少閃爍的情況,
標籤:
cpp,
mfc,
windows api
2010年9月27日 星期一
利用 SetWindowRgn 製作非矩型視窗
在 XP 預設的外觀樣式下,正常的視窗或對話框是上方頂點圓圓的配下方直角,
若有需要做出非預設樣式的視窗時,可以利用 CWnd::SetWindowRgn() 這個 function
這可以用來指定視窗的全部範圍與型狀,
在型狀之外的部份會自動為我們加上背景的遮罩。
若有需要做出非預設樣式的視窗時,可以利用 CWnd::SetWindowRgn() 這個 function
這可以用來指定視窗的全部範圍與型狀,
在型狀之外的部份會自動為我們加上背景的遮罩。
標籤:
cpp,
mfc,
windows api
client area 與 WM_NCHITTEST
在 MFC 中若要製作不同於 Windows 風格的視窗時,
往往會將 Dialog 的 Border 屬性設為 None,
然後利用自己畫背景的方式製作美美的視窗、對話框。
往往會將 Dialog 的 Border 屬性設為 None,
然後利用自己畫背景的方式製作美美的視窗、對話框。
標籤:
cpp,
mfc,
windows api
2010年9月24日 星期五
使用 ISAXContentHandler 解讀 XML 的注意事項
在 C++ 底下要解讀 XML 檔案常用的有兩個方法,一是使用 IE6 就有附加的 CLSID_DOMDocument30 元件,二是使用較底層的 Windows API ISAXContentHandler,兩都都需要 include msxml2.h 檔案
標籤:
cpp,
mfc,
windows api
2010年9月10日 星期五
訂閱:
文章 (Atom)