MFC部分控制項簡單使用

2021-07-16 16:46:00 字數 4520 閱讀 2276

一.list control列表控制項(隸屬於clistctrl類)

1. clistctrl 風格

lvs_icon: //為每個item顯示大圖示

lvs_smallicon: //為每個item顯示小圖示

lvs_list: //顯示一列帶有小圖示的item

lvs_report: //顯示item詳細資料

//直觀的理解:windows資源管理器,「檢視」標籤下的「大圖示,小圖示,列表,詳細資料」

2. 設定listctrl 風格及擴充套件風格

long lstyle;

lstyle = getwindowlong(m_list.m_hwnd, gwl_style);//獲取當前視窗style

lstyle &= ~lvs_typemask; //清除顯示方式位

lstyle |= lvs_report; //設定style

setwindowlong(m_list.m_hwnd, gwl_style, lstyle);//設定style

dword dwstyle = m_list.getextendedstyle();

dwstyle |= lvs_ex_fullrowselect;//選中某行使整行高亮(只適用與report風格的listctrl)

dwstyle |= lvs_ex_gridlines;//網格線(只適用與report風格的listctrl)

dwstyle |= lvs_ex_checkboxes;//item前生成checkbox控制項

m_list.setextendedstyle(dwstyle); //設定擴充套件風格

3. 插入資料

m_list.insertcolumn( 0, "id", lvcfmt_left, 40 );//插入列

m_list.insertcolumn( 1, "name", lvcfmt_left, 50 );

int nrow = m_list.insertitem(0, "11");//插入行

m_list.setitemtext(nrow, 1, "jacky");//設定資料

4. 刪除所有列

// 方法一:

while ( m_list.deletecolumn (0))

//因為你刪除了第一列後,後面的列會依次向上移動。

//方法二:

int ncolumns = 4;

for (int i=ncolumns-1; i>=0; i--)

m_list.deletecolumn (i);

5. 單行刪除(刪除最後一行)

int n = 0;//全域性變數,代表之前新增的行

if(n == 0)

n--;

m_list.deleteitem(n);

6. 單行刪除(刪除選中行)

if(n == 0)

for(int i=0;i二.combobox控制項

1.在類嚮導中建立控制項關聯成員變數m_combo,型別為ccombobox

控制項屬性為下拉列表,並去掉分類屬性(按照寫入字串的順序排序而非字母順序)。

2.在初始化函式oninitdialog()中新增控制項初始化顯示的內容

m_combo.addstring("漢族");

m_combo.addstring("其他");

// ((ccombobox*)getdlgitem(idc_nation))->addstring("另一種");//此方法也可以,但是不夠簡單

m_combo.setcursel(0);//初始化選擇"漢族"

3.獲取當前選擇字串

cstring str;

int nsel = m_combo.getcursel();

m_combo.getlbtext(nsel,str);

**

bool clistctrldlg::oninitdialog() }

// set the icon for this dialog. the framework does this automatically

seticon(m_hicon, true); // set big icon

seticon(m_hicon, false); // set small icon

// todo: add extra initialization here

return true; // return true unless you set the focus to a control

}//列表屬性要調成「報告」

bool clistctrldlg::addlist()

m_list.insertcolumn(0,"工號",lvcfmt_left,60);

m_list.insertcolumn(1,"姓名",lvcfmt_left,70);

m_list.insertcolumn(2,"部門",lvcfmt_left,50);

m_list.insertcolumn(3,"性別",lvcfmt_left,50);

m_list.insertcolumn(4,"學歷",lvcfmt_left,60);

m_list.insertcolumn(5,"外語",lvcfmt_left,60);

m_list.insertcolumn(6,"民族",lvcfmt_left,60);

m_list.insertcolumn(7,"入職日期",lvcfmt_left,100);

//設定背景及風格

m_list.setextendedstyle(lvs_ex_checkboxes|lvs_ex_fullrowselect|lvs_ex_headerdragdrop|lvs_ex_oneclickactivate|lvs_ex_gridlines);

m_list.setbkcolor(rgb(220,240,240)); //設定背景顏色

m_list.settextbkcolor(rgb(220,240,240));//設定文字背景顏色

m_list.settextcolor(rgb(128,64,0)); //設定文字顏色

return true;

}//增加行的函式

bool clistctrldlg::addlistitem()

int ncount = m_list.getitemcount();//獲取當前已經存在的行數

m_list.insertitem(ncount,m_sznumber);

m_list.setitemtext(ncount,1,m_szname);

m_list.setitemtext(ncount,2,m_szbranch);

m_list.setitemtext(ncount,3,m_n***?"女":"男");

char *p=;

m_list.setitemtext(ncount,4,p[m_neduca]);

//對於核取方塊,選中為真,初始化都為false(定義成員變數的時候在建構函式中已經初始化)

cstring str;

if(m_bengl)

str += "英";

if(m_bjapa)

str += "日";

if(m_bruss)

str += "俄";

if(m_bkorea)

str += "韓";

if(str.isempty())

str += "無";

m_list.setitemtext(ncount,5,str);

int nsel = m_nation.getcursel();

m_nation.getlbtext(nsel,str);

m_list.setitemtext(ncount,6,str);

str.format("%d-%d-%d",m_dtjoin.getyear(),m_dtjoin.getmonth(),m_dtjoin.getday());

m_list.setitemtext(ncount,7,str);

// ++n;

return true;

}//刪除行的函式

bool clistctrldlg::deletelistitem()

for(int i=0;i

MFC之Tab Control控制項簡單使用

在mfc當中使用tab control控制項切換不同的介面,使用起來會複雜一些,至少是比qt中的tab widget複雜得多。我接下來會以乙個mfc對話方塊應用程式為例子,說明tab control控制項的簡單使用方法。1.1建立乙個mfc對話方塊應用程式,在對話方塊中拖入tab control控制...

MFC控制項使用

對於一般控制項,直接宣告後呼叫其create 方法就可以在檢視中建立,如 cstatic m static m static.create static ws child ws visible ss center,crect 20,20,100,40 this,0 其中的crect是用來定位及定義大...

MFC中Listbox控制項的簡單使用

mfc中listbox控制項是為了顯示一系列的文字,每個文字佔一行。listbox控制項可以設定屬性為 lbs child 預設 子視窗 lbs visible 預設 可視 lbs multiplesel 可選擇多行 lbs extendedsel 可以使用shift或ctrl選擇多行 lbs so...