Sean's Note
Sean's Note
2011年12月5日 星期一
工作管理員會拿走滑鼠資源
發現一個有趣的問題,當在執行自己開發的 A 程式時,
同時開著工作管理員,工作管理員會因為要一直更新,
而不斷的使用滑鼠資源,造成 A 程式一直收到 WM_MOUSEMOVE,
所以造成 A 程式可能會有些不預期的狀況發生。
2011年11月23日 星期三
[DEBUG] _RPT & _RPTF
Visual C++ 提供了
_RPT 和 _RPTF
巨集來幫助使用者除錯,
其功能類似於 printf,但僅在 Debug 設定下會印出字串,
Release 設定下則會自動刪除。其可印出呼叫該巨集的程式檔案名稱與行數。
例如 :
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
_RPT0(_CRT_WARN, "Test.\n");
// Output
Test
_RPT1(_CRT_WARN, "Test %d.\n", 1);
// Output
Test 1
_RPTF0(_CRT_WARN, "Test.\n");
/
/ Output
d:\win32\assert\assert\assert.cpp(54) : Test
_RPTF1(_CRT_WARN, "Test %d.\n", 1);
/
/ Output
d:\win32\assert\assert\assert.cpp(54) : Test 1
有無 F 差在要不要印出檔案名稱與行數,而數字代表要代入的參數個數,最多到 4 。
[DEBUG] _ASSERT & _ASSERTE
Visual C++ 提供了
_ASSERT 和 _ASSERTE
巨集來幫助使用者除錯,
其功能類似於 printf,但僅在 Debug 設定下會印出字串,
Release 設定下則會自動刪除。其可印出一布林運算式的結果。
用法例如 :
_ASSERT(3 == 3);
// Output
d:\win32\assert\assert\assert.cpp(53) :
_ASSERT(3 == 2);
// Output
d:\win32\assert\assert\assert.cpp(53) :
Assertion failed!
_ASSERTE(3 == 3);
// Output
當條件成立時不印出任何字串
_ASSERTE(3 == 2);
// Output
d:\win32\assert\assert\assert.cpp(53) :
Assertion failed : 3 == 2
記得要先設定為
_CRTDBG_MODE_FILE
,才會顯示在
console
上,
否則預設為跳出視窗
(
_CRTDBG_MODE_WNDW )
。
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
2011年10月4日 星期二
處理路徑字串的常用函式
PathCombine
(
__out
LPTSTR lpszDest,
__in_opt
LPCTSTR lpszDir,
__in
LPCTSTR lpszFile )
in:
C:
in:
One\Two\Three
out:
C:\One\Two\Three
PathRemoveExtension(
__inout
LPTSTR pszPath
)
in:
C:\TEST\sample.txt
out:
C:\TEST\sample
PathFindExtension(
__in
PTSTR pszPath
)
in:
C:\TEST\sample.txt
out:
.txt
PathRemoveFileSpec(
__inout
LPTSTR pszPath
)
in:
C:\TEST\sample.txt
out:
C:\TEST
GetSystemDirectory(
__out
LPTSTR lpBuffer,
__in
UINT uSize
)
out:
C:\Windows\System32
PathStripPath
(
__inout
LPTSTR pszPath);
in:
c:\\dir1\\file.txt
out:
file.txt
2011年9月15日 星期四
[Win32] 如何修改 Edit Control 和 Static Control 的文字顏色和背景顏色
當 Edit Control (Edit Text) 和 Static Control (Static Text) 要被繪圖的時候,
視窗就會接受到 WM_CTLCOLORSTATIC 的訊息,
當接收到此訊息後,可以利用 wParam 和 lParam 分別取得元件的 hDC 和 handle,
再透過 SetTextColor 和 SetBkColor 函式,並建立背景筆刷 hBRUSH,
即可更改顏色,詳細內容與範例請參考
MSDN
。
Window Controls 和 .rc 檔
用 Visual Studio 在開發 win32 或 MFC 視窗程式的時候,
我們常常可以用拖拉的方式來建立許多元件 (Controls),
並由旁邊的屬性對話窗 (Properties Dialog),來更改一些屬性,
但並非所有屬性都會列於此,例如元件的長寬等等,
這時就必須透過程式或者 *.rc 資源檔來直接做修改。
而在
MSDN
裡有介紹了各種元件在 rc 檔的格式。
2011年9月13日 星期二
[VC] 用 dumpbin 來看 DLL 檔
在 Visual Studio 裡提供了 dumpbin 工具,可以用來查看
DLL 檔提供了哪些函式,dumpbin.exe 的位置於 :
C:\Program Files\Microsoft Visual Studio 8\VC\bin
如果執行時出現找不到 mspdb80.dll
時,
將 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
加到系統環境變數的 Path 裡。
較新的文章
較舊的文章
首頁
訂閱:
文章 (Atom)