MFC自定義控制項

2021-08-01 17:37:03 字數 1329 閱讀 4296

需要在mfc實現自定義控制項功能,網上蒐集找的如下方法實現:

以下是步驟說明。

一、自定義乙個空白控制項

1、先建立乙個mfc工程

2、在視窗中新增乙個自定義控制項

toolbox-->「custom control」-->屬性-->class隨便填寫乙個控制項類名「cmywin」, 這個名字用於以後註冊控制項用的,註冊函式為registerwindowclass()。

3、建立乙個類

在視窗中,右擊custom control 控制項-->classwizard-->classwizard-->add class-->類名cmytest(以c開頭)-->base class:cwnd。

4、註冊自定義控制項mywin

在mytest類.h檔案中宣告註冊函式bool   registerwindowclass(hinstance hinstance = null)。

bool cmytest::registerwindowclass(hinstance hinstance)   

}

return

true;

}

5、在mytest類的構造器中呼叫 registerwindowclass()。

cmytest::cmytest()   

6、控制項與對話方塊資料交換

在customctrdlg.h中定義乙個變數:

cmytest    m_draw;

在對話方塊類的customctrdlg.cpp的dodataexchange函式中新增ddx_control(pdx,idc_custom1,m_draw)。

void ccustomctrdlg::dodataexchange(cdataexchange* pdx)   

以上是自定義乙個空白控制項。

二、在控制項上繪圖

1、在cmytest類中新增乙個繪圖訊息

在vs2010最左側class view中右擊cmytest類-->classwizard-->messages-->wm_paint-->雙擊,開發環境自動新增onpaint()函式及訊息佇列。

2、編寫onpaint()函式

例如:畫一條直線

void cmykk::onpaint()   

MFC控制項的自定義繪製

mfc一部分空間提供了對控制項的customdraw,對於控制項的子項都能夠進行定製,如果這樣還是不能滿足應用的話,建議不要用控制項了,直接繼承自cwnd進行全部繪製才是最好的辦法,mfc提供的自繪功能也只能是在一定的限制條件下的,比如子項的統一高度和子項的規則性,比如clistctrl控制項就不能...

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

自定義控制項

首先是以下這幾項,attribute defaultproperty指定元件的預設屬性,toolboxdata指定當從ide工具中的 工具箱中拖動自定義控制項時為它生成的預設標記 defaultproperty text toolboxdata mycontrol runat server 上面這些...