由於工作需要,自繪了大部分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實現,注...