Windows Programing OwnDarw Button中的DRAWITEMSTRUCT結構體~

看本文先打開《Programming Windows程式開發設計指南》thumbs_up.gif 好書~,ISBN:957-8239-73-4,原作者:Charles

Petzold  第一部分第九章“子視窗控制項”。
按鈕類別共有10種,分別是:
        BS_PUSHBUTTON   
      BS_DEFPUSHBUTTON
      BS_CHECKBOX
      BS_AUTOCHECKBOX
      BS_RADIOBUTTON
      BS_3STATE
      BS_AUTO3STATE
      BS_GROUPBOX
      BS_AUTORADIOBUTTON
      BS_OWNERDRAW
我在學習這一章處看到了建立BS_OWNERDRAW樣式的按鈕,程序代碼上書中都有,其中有一處有一結構體,cry_smile.gif

LPDRAWITEMSTRUCT,書中沒有明確給出,後面不知道有沒有給我,我還沒有看呢
 查MSDN 如下:
typedef struct tagDRAWITEMSTRUCT {  ;// dis
  UINT  ;CtlType; //控件類型
  UINT  ;CtlID;  ; //控件的ID
  UINT  ;itemID;  ;//控件內部的ID號
  UINT  ;itemAction; //在什麼情況下繪製控件
  UINT  ;itemState; //當前模式
  HWND  ;hwndItem; //控件名柄
  HDC  ; hDC; //設備句柄
  RECT  ;rcItem; //控件範圍
  DWORD itemData; //數據
} DRAWITEMSTRUCT;   具體見MSDN,查DRAWITEMSTRUCT就可以了~74_74.gif

  此程序的重點代碼就是 WM_DRAWITEM消息處,按下按鈕時,它們就會產生WM_COMMAND訊息,那麼

WM_DRAWITEM消息在什麼時候會發生呢?只要系統需要重新繪製該控件就會發出該消息,如切換窗口,菜

單下拉等。還有一個座標的定位~

“在處理WM_DRAWITEM訊息處理期間,lParam訊息參數是指向型態DRAWITEMSTRUCT結構的指標”

“FillRect用白色畫刷抹掉按鈕的內面,呼叫FrameRect在按鈕的周圍畫上黑框,由此OWNDRAW便啓動了

WM_DRAWITEM處理過程。”FillRect和FrameRect分別是兩個API,

如果哪一個按紐得到焦點,“呼叫DrawFocusRect,在按鈕的邊界內畫一個虛線的矩形。”

  感覺就是是使用OWNERDRAW 樣式的button 時,DRAWITEMSTRUCT這個結構體必須深刻理解~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章