Sean's Note: 1月 2012

2012年1月19日 星期四

[DEBUG] GraphEdit 9

我們可以用 GraphEdit 來看視訊或音訊檔案,預設是用什麼 Splitter, Decoder, Filter

和什麼 Renderer 來播放的。除此之外,我們也可以替換想要用的元件。

GraphEdit  可以在灌完 Microsoft SDK 後的路徑下找到。

Note: 如果在 Insert Filters 時,想要展開 DirectShow Filters,卻發生 crash,應該是和

其他 filters 相衝,可以把 K-Lite 移除在試試。

除了 GraphEdit,K-Lite 的 GraphStudio 也是相當好用,更勝於  GraphEdit,會自動列

出符合該檔案格式的 filters 以供選擇。

GraphEdit 的使用教學:
http://crazyktv.pixnet.net/blog/category/1933869

[DEBUG] ProcessMonitor 2.96

ProcessMonitor 可以幫助開發者查看特定應用程式正在執行時,所存取

的 RegKey 和檔案等等,是個相當方便的工具。

下面的網誌作者做了簡略的介紹:
http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/08/18/977.aspx

2012年1月10日 星期二

[Win32] 自訂 Button 的顏色

在 Win32 的視窗程式設計下,想要自訂 Button 的顏色或 Button 文字的顏色,

並非易事,必須搭配 WM_DRAWITEM 來繪製自訂 Button。

1. 首先,在 Button 的 Properties Page 上將 Owner Draw 屬性設成 True。

2. 接收到 WM_DRAWITEM 訊息時繪製 Button 的樣式和欲顯示的字串。

    2.1 利用 DrawEdge() 可繪製 Button 被按下和沒按的樣子。

    2.2 DrawText() 可畫出文字,避免使用 SetWindowText(), 因為其會再觸發

          WM_DRAWITEM  很容易造成無窮回圈,而導致 Stack overflow。

FindWindow V.S. FindwindowEx

Findwindow() 是用來找 top-level (像是父視) 的視窗,而要找同層的視窗或子視窗時

,就必須用 FindwindowEx(),例如 : 當 Dialog_A 與 Dialog_B 有共同父視窗時,

FindWindowEx(GetParent(handle_A), NULL, NULL, L"Dialog_B");

即可取得 Dialog_B 的 handle。

2012年1月4日 星期三

[MS-DOS] 寫 BAT 檔的常用指令

1. 註解 :
    可在文字前加上 REM 或 :: 就代表該行為註解。

2. 變數 :
    利用 SET 可自訂變數的值,如 SET="hello"SET=1,需注意的是等號左邊不得
    有空白,SET =1 是錯誤的語法。
 
    其他用法  - 輸入 :
    如同 C 的 getchar(),利用 /p 也可讓使用者輸入參數。
    SET /p age=請輸入你的年紀:

    其他用法  - 取代指定的字串 :
  SET str=ababab
  SET str2=%str:a=b%   

  str2 == bbbbbb

  a 即為參照的字元
  b 為更改後的字元

    其他用法  -  取得指定位置的字串:
  SET str=0123456
  SET str2=%str:~1,3%   

  str2 == 12345

  1 即為從第幾位元開始
  3 為往後取3位   

3.  條件判斷 :
     如同 C 的 if-else,但在格式上有更多限制,若 if-else 同時出現則需伴隨著括號 "( )"
    ,如 : if condition ( statement ) else ( statement )
     但寫作下式會來的更好,
  
  if condition (
    statement
  ) else (
    statement
  )

     在這裡要注意 if  和 "(" 必須在同行 還有 ")" 和 "(" 必須和 else 在同行,否則都是錯
     誤的語法,寫成上式的好處是我們可以加上許多 statement,如下 :

  if condition (
    statement 1
    statement 2
    ...
    statement N
  ) else (
    statement 1
    statement 2
    ...
    statement N
  )

4. RENAME / REN :
    重新命名檔案或資料夾,EX: RENAME "%DST%\my.dll" "my2.dll"

5. DEL / ERASE :
    刪除檔案或資料夾,EX: DEL"%DST%\my.dll"


相關網站: http://www.computerhope.com/sethlp.htm