基於MFC單文件程式的CheckBox運用

2021-07-14 06:12:30 字數 1188 閱讀 8254

首先,單文件程式不能像基於對話方塊程式一樣直接把checkbox拖到主介面中,必須自己手動建立,即靠**寫出來。

其次,mfc沒有ccheckbox類,只有clistbox 和 cchecklistbox類,後兩者相比, cchecklistbox 比 clistbox 多了核取方塊,因此這兒我們需要用到  cchecklistbox類。

具體實現步驟如下:

(1)在某檢視cpp 中新增 核取方塊的id,比如: idc_check_list_box = 1400;

(2)在類成員中新增該類,比如:cchecklistbox m_checklistbox;

(3)手動新增訊息對映,位置在 begin_message_map(xx, xx) 和 end_message_map()之間,

比如:on_clbn_chkchange(idc_check_list_box, &xx::onselchangechecklistbox)

(4)自定義訊息響應函式,函式名就是 onselchangechecklistbox,至於函式內容更具需要自己寫,

其中需要用的函式有,m_checklistbox.getcursel(); // 選擇一共有幾個下拉列表

m_checklistbox.getcheck(isel); // 獲取第 isel 行的狀態,即選中或未選中

(5)在類成員方法中,宣告上面的訊息相應函式,比如:afx_msg void onselchangechecklistbox();

(6)當然還差最重要的一步,就是自己要建立這個cchecklistbox類,利用create 函式,也很簡單,一般放在oninitialupdata中,比如:

m_checklistbox.create(lbs_hasstrings | lbs_ownerdrawfixed | ws_child | ws_visible, crect(10, ipanelhead + 30, 100, ipanelhead + 75), this, idc_check_list_box);

同時新增這個list中的內容,比如:

m_checklistbox.addstring(" a");

m_checklistbox.addstring(" b");

(7)大功告成了!

我的程式實在visual studio2015中開發的,我想vs2008之後應該都包含以上的函式,也即是都可以按照我的流程實現的。

最後我再附圖一張:

基於文件的MFC程式

以前雖然自學過mfc,也僅僅是接觸了基於對話方塊的,所以對於基於文件類的程式和框架機理根本就沒搞清楚。趁這次機會,得好好弄個明白才行。本來想從 深入淺出mfc 這本書上學習關於多文件的知識的,由於只有電子版,實在看得頭疼,所以先在網上找了一些有關的資料,等買到了這本書後再看下。這裡是網上乙個介紹多文...

MFC 應用程式型別 單文件 多文件與基於對話方塊

型別解釋 單文件 記事本類程式的標準模式,有選單欄 工具欄等,只能進行乙份文件的操作,即不能同時在同乙個應用程式中開啟兩個檔案 多文件 word類或瀏覽器程式的標準模式,可多個視窗顯示不同的資訊,進行不同的任務,有過個檢視環境,可同時操作多個檔案。多個檔案共享同一選單欄 工具欄等 對話方塊 可方便的...

MFC單文件程式架構解析

首先我們了解到的是 圖 一 圖 二 csingledoctemplate pdoctemplate pdoctemplate new csingledoctemplate idr mainframe,runtime class cmainframe main sdi frame windon 這裡體...