顯示具有 windows api 標籤的文章。 顯示所有文章
顯示具有 windows api 標籤的文章。 顯示所有文章

2013年6月26日 星期三

自訂應用程式中的 WebBrowser 版本

寫 Web 的人都了解,有個讓網頁開發者很困擾的問題,就是各家瀏覽器對 HTML、CSS 的表現不一致,這種現像尤其在微軟的 Internet Explorer 上更明顯,雖然 IE 9、10 已經明顯的趕上其他瀏覽器,但並不是所有的電腦用戶都會理解網頁看起來怪怪的是瀏灠器版本的問題而自行更新瀏覽器。

2013年6月25日 星期二

指定應用程式 Crash Dump 的儲存位置

在 Windows XP 作業系統下,應用程式 Crash 時會產生一種副檔名為 dmp 的檔案,內容記載著執行檔的記憶體資料及 StackTrace 等資訊可用來 Debug。

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

2010年12月13日 星期一

取得螢幕 DPI 設定值

在寫 Windows 視窗軟體時,顯示文字資訊有幾項方法,
第一就是使用控制項例如 Static Text、Edit Control 等顯示文字訊息,
另一種很常用的就是將文字利用 DC.DrawText() 等方式畫在視窗上。

2010年11月14日 星期日

FindWindow 與 GetWindow


HWND WINAPI FindWindow(
  __in_opt LPCTSTR lpClassName,
  __in_opt LPCTSTR lpWindowName
);


這是一個 Windows API,用於找出某個視窗…
回傳值 HWND 為該視窗的 handle,若查無此視窗則回傳0
前幾天檢查 Code 發現自己用錯了,所以記一下…

2010年10月1日 星期五

mouse leave 與 mouse event track

在 C++/MFC 中雖然有 MouseLeave 的事件可以選擇,
但選了卻沒有反應,原因是必須加上 Track 追蹤滑鼠,
以下是在 MFC 上實作 Mouse Leave 和 Mouse Over 的簡單範例。

2010年9月28日 星期二

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

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

利用 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年8月18日 星期三

利用 Event 定時處理某些事情

在軟體流程中,常常需要在固定一段時間後去做某件事,例如股市看盤軟體,每1分鐘要更新一次走勢圖,包括交易量、成交金額等資訊,初心者經常會使用 SetTimer() 來做這種事,但 SetTimer 這種事只存在於視窗中,例如 CWnd、CDialog 等等視窗。

2010年8月17日 星期二

Thread 常用的同步方式

有時後我們會使用 Thread 來在背景做一些事,僅僅是為了不讓畫面被 main thread 卡住,若我們需要等待 thread 做完事才處理接下來的動作,可以使用以下 Windows API

2010年8月16日 星期一

Multi Thread 常用的安全控制

Thread 有至少 3 種狀態供我們利用,分別為
1. Running - 正在佔用CPU執行中
2. Ready - 可立即執行的狀態,但CPU仍被佔用
3. Waiting - 等待事件