对于一般控件,直接声明后调用其Create()方法就可以在视图中创建,如
CStatic m_Static;
m_Static.Create("STATIC",WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(20,20,100,40),this,0);
其中的CRect是用来定位及定义大小的.
对于Button,需要响应事件的,就要先在Resource.h当中对资源进行定义,再在View当中声明消息响应函数,在在消息映射中添加
ON_BN_CLICKED(资源名,消息函数名)
再实现消息函数就可以了.
另外,对于CRect(int l,int t,int r,int b),苦中的参数分别代表(左,上,右,下),左上定义一个点坐标,右下定义一个点坐标
图像列表及列表视图控件:
创建一个CImageList控件和CListCtrl控件:
m_Image.Create(32,32,ILC_COLOR,3,4);
HICON icon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON1));//IDI_ICON1为一个图标资源标识
m_Image.Add(icon);
m_List.Create(WS_VISIBLE|WS_CHILD|WS_BORDER|LVS_REPORT|LVS_NOSORTHEADER,CRect(20,150,500,400),this,IDC_LISTVIEW);
m_List.SetImageList(&m_Image,LVSIL_SMALL);
特别的,对于CListCtrl的列表视图来说,可以添加列的标签:
LV_COLUMN lv;//列结构
lv.mask=LVCF_WIDTH|LVCF_TEXT|LVCF_FMT|LVCF_SUBITEM;
lv.fmt=LVCFMT_CENTER;//对齐方式
lv.cx=75;//列宽
lv.iSubItem=0;//这个是指当前这个ITEM的列索引标识
lv.pszText="Column 0";
m_List.InsertColumn(0,&lv);//第一个参数是指插入在哪里
lv.iSubItem=1;
lv.pszText="Column 1";
m_List.InsertColumn(1,&lv);
lv.iSubItem=2;
lv.pszText="Column 2";
m_List.InsertColumn(2,&lv);
添加一行元素:
LV_ITEM item;
item.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_STATE;
item.state=0;
item.stateMask=0;
item.iImage=1;//图像索引,值为在CImageList当中添加递增顺序的index
item.iItem=1;//说明item所在的行
item.iSubItem=0;//说明item的起始列
item.pszText="Text";
m_List.InsertItem(&item);
m_List.SetItemText(0,1,"SubItem1");
m_List.SetItemText(0,2,"SubItem2");//第一个参数是指iItem,即行索引,第二个参数是指列号索引的值,为几就放到第几列
item.iItem=1;
item.iSubItem=0;
item.pszText="Text2";
m_List.InsertItem(&item);
m_List.SetItemText(1,1,"SubItem3");
m_List.SetItemText(1,2,"SubItem4");
item.iItem=2;
item.iSubItem=0;
item.pszText="Text3";
m_List.InsertItem(&item);
m_List.SetItemText(2,1,"SubItem5");
m_List.SetItemText(2,2,"SubItem6");
值得注意的是,测试过程当中iSubItem好像没什么用,这个MARK一个