2 VC ui MFC控制項自繪屬性的總結

2021-05-23 07:37:41 字數 489 閱讀 3285

由於工作需要,自繪了大部分mfc控制項,現作個總結如下

ctreectrl是在onnmcustomdraw中自繪的,不要設定其他屬性

clistctrl是在drawitem中自繪的,要設定屬性lvs_ownerdrawfixed|lvs_report

cbutton是在drawitem中自繪的,要設定屬性bs_ownerdraw

cmenu是在drawitem中自繪的,要把每一項都設定屬性mf_ownerdraw,用到遞迴方法

單選按鈕是基於cbutton在drawitem中自繪的,要重寫create設定屬性為

dwstyle &= ~(0xf);

dwstyle |= bs_autoradiobutton;

dwstyle |= bs_ownerdraw

clistbox是在drawitem中自繪的,必須加上屬性lbs_ownerdrawfixed |lbs_hasstrings

自繪控制項的方法

1.子類化控制項 2.重寫onpaint 所有控制項都是在onpaint裡畫出來的,我們可以不呼叫父類的onpaint,直接自己畫控制項。3.重寫控制項能響應的各種滑鼠鍵盤事件,通過狀態位在onpaint中畫出不同事件下控制項的樣子,比如滑鼠按下的狀態對應巨集button down,在響應函式中呼叫...

MFC控制項的自繪

常見的控制項自繪的方法有父視窗的ondrawitem 函式 子控制項的drawitem 函式 子控制項的ctlcolor 函式 子控制項的onpaint 函式,子控制項的onnmcustomdraw 函式等。自繪控制項的話需要控制項具有owner draw屬性,通過create 建立控制項的時候新增...

自繪按鈕控制項的2個注意點

1 宣告自繪屬性 有兩種方式,一種是通過資源檢視修改按鈕的屬性,將owner draw改為true 另一種是通過 實現。在重寫的presubclasswindow中新增一句自繪屬性 void cmybutton presubclasswindow 2 繪製按鈕 通過過載虛函式drawitem實現,注...