MFC基础知识总结.docx
《MFC基础知识总结.docx》由会员分享,可在线阅读,更多相关《MFC基础知识总结.docx(49页珍藏版)》请在冰豆网上搜索。
![MFC基础知识总结.docx](https://file1.bdocx.com/fileroot1/2022-11/15/8e170273-ae5f-4dce-b44b-dc4a8e63f87b/8e170273-ae5f-4dce-b44b-dc4a8e63f87b1.gif)
MFC基础知识总结
1.列表视图控件:
ClistCtrl类的用法:
1常规操作函数:
它们可以完成向列表视图中插入新
条目或新列等操作。
ISubItem-指定条目子索引项
BOOLDeleteAllItems()删除列表控件中所有条目
intInsertColumn(intnCol,constLVCOLUMN*pColum)插入新列操作成功返回新列索引
nCol-----指定新列索引。
pColum---为LVCOLUMN结构指针,包含将插入的信息。
LVCOLUMN结构
例:
m_ListCtrl.InsertColumn(0,_T("所有匹配的单词"),LVCFMT_LEFT,115);
intInsertItem(constLVITEM*pItem)调用该函数以
向列表中插入新条目返回新条目索引值
pItem-------为LVITEM结构,其中包含了将插入的条目信息
列表控制中包含两个非常重要的数据结构LV_ITEM和LV_COLUMN。
LV_ITEM用于定义列表控制的一个表项,LV_COLUMN用于定义列表控制的一个表列
例:
m_ListCtrl.InsertItem(0,WordSet.m_Word);//数据项
CStrings;
s.Format("%d",m_Set.m_column1);//格式化
//intInsertItem(i,s,0)调用该函数以向列表中插入新条目返回新条目索引值
//相当于插入新的一行数字代表列数
m_ListCtrlx.InsertItem(i,s,0);
EnsureVisible---调用该函数以确保指定的列表视图条目可见,其原型为:
BOOLEnsureVisible(intnItem,BOOLbPartialOK)
返回值:
nItem:
指定了必须可见的条目索引。
bPartialOK:
指定了是否允许部分可见。
列表视图控件将在必要时进行滚动,以确保指定条目可见。
如果bPartialOK参数为非零值,则当条目部分可见时,列表视图控件不进行滚动。
2。
属性操作函数:
它们可以完成对列表视图控件的属性的设置和查询等操作。
DWORDSetExtendedStyle(DWORDdwNewStyle)//先设计列表风格
如果函数调用成功,则返回列表视图控件先前所使用的
扩展风格。
LVS_EX_FULLROWSELECT-----对列表视图中的项目进行整行选择,即选择某条目时,该条目的所在行都被选择。
LVS_EX_GRIDLINES----将在列表视图控件中绘制网格线0x21。
例:
m_ListCtrl.SetExtendedStyle(LVS_EX_GRIDLINES);//将在列表视图控件中绘制网格线0x21。
POSITIONGetFirstSelectedItemPosition()const如果函数执行成功,则返回条目的POSITION值,如果返回值为KULL,则表示当前列表视图控件中没有条目选中。
IntGetNextSelectedItem(POSITION&pos)const如果函数执行成功,则返回列表视图控件中下一个被选中的条目索引。
其中参数pos为将接收条目POSITION值的变量。
BOOLSetColumnWidth(intnCol,intcx)
调用该函数以设置报表视图或列表视图中指定列的宽度。
nCol----指定了将被设置宽度的列索引。
cx-------指定了列的新宽度。
IntGetItemText(intnItem,intnSubItem,LPTSTRlpszText,intnLen)const;
CStringGetItemText(intnItem,intnSubItem)const;
对于int,其返回值为所指定的文本长度;对CString,其返回值为包含条目文本的CString对象。
nItem--------指定将被获取文本的条目索引
nSubItem---------指定了将被获取文本的条目子项的索引。
lpszText---------将返回条目文本的缓冲区指针。
nLen----------指定lpszText缓冲区的长度。
如果nSubItem为0,则函数将获取条目的标签,nSubItem不为0,将获取指定条目子项的文本。
例:
BOOLSetItemText(intnItem,intnSubItem,LPTSTRlpszText);
如果函数调用成功,则返回非零值,否则返回零值。
nItem--------指定将被设置的条目索引
nSubItem---------指定了将被设置文本的条目子项的索引。
lpszText---------指定了将被设置的新条目文本。
例:
charszTemp[27]={'\0'};//缓冲区
POSITIONPos=m_ListCtrl.GetFirstSelectedItemPosition();
if(Pos==NULL)return;
intnCurIndex=m_ListCtrl.GetNextSelectedItem(Pos);
m_Display.Empty();//文本编辑框
m_ListCtrl.GetItemText(nCurIndex,0,szTemp,26);
CImageList:
图像列表
CImagelist*GetImageList(intnImageList)const;
如果函数执行成功,则返回列表视图控件的图像列表指针。
nImageList----指定了将获得的图像列表类型。
LVSIL_NORMAL---获取大图标图像列表指针
LVSIL_SMALL--获取小图标图像列表指针
LVSIL_STATE--获取状态图像列表指针
CImageList*SetImageList(CImageList*pImageList,intnImageList);
如果函数执行成功,返回先前的图像列表指针
参数:
pImageList--指定了要设置的图像列表指针
nImageList--指定了要设置的图像列表类型
COLORREFGetBkColor()const;调用该函数获得列表视图控件的背景颜色。
函数执行成功,返回32位RGB值
BOOLSetBkColor(COLORREFcr);调用该函数设置列表视图控件的背景颜色。
函数执行成功,返回非零值,否则返回零值。
CHeaderCtrl*GetHeaderCtrl();调用改函数以得到列表视图控件的标头控件指针
函数调用成功,返回列表视图控件所使用的标头控件指针
例:
m_imagelist.Create(16,16,TRUE,2,2);
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_YES));
m_imagelist.Add(AfxGetApp()->LoadIcon(IDI_NO));
m_list.SetImageList(&m_imagelist,LVSIL_SMALL);
m_list.SetExtendedStyle(0x21);
m_list.SetFont(&m_font1);//设置全部字体
//m_list.GetHeaderCtrl()->SetFont(&m_font1);//只设置标头控件的字体
//以下函数与文本有关
m_list.SetBkColor(RGB(247,247,0));
m_list.SetTextColor(RGB(255,255,255));//设置列表视图控件的文本颜色
m_list.SetTextBkColor(RGB(0,0,255));//设置列表视图控件中文本背景色
m_iImageList.Create(24,24,TRUE,1,0);
HICONhIcon=NULL;
hIcon=(HICON):
:
LoadImage(:
:
AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDI_KEBIAO),IMAGE_ICON,24,24,0);
m_iImageList.Add(hIcon);
m_FileTree.SetImageList(&m_iImageList,TVSIL_NORMAL);
----------------------事例----------------------------------
实现排序:
BOOLm_Bs;
BOOLm_bIsAsc;//互斥信号量:
true升序反之降序
CDRecordsetm_Set;
voidSort(BOOLisAsc=TRUE,intsecol=1);
voidCBaDialog:
:
Sort(BOOLisAsc,intsecol)
{
if(m_Set.IsOpen())
m_Set.Close();
this->Select();//打开所选择数据表
m_bSet.Close();//只对m_Set数据标排序所以关闭m_bSet
CODBCFieldInfofieldInfo;
m_Set.GetODBCFieldInfo(secol,fieldInfo);//返回纪录集中字段的特定种类的信息即所选
择的信息
if(isAsc)//实现排序功能
{
m_Set.m_strSort=fieldInfo.m_strName+"ASC";//orderby
m_bIsAsc=TRUE;
}
else
{
m_Set.m_strSort=fieldInfo.m_strName+"DESC";
m_bIsAsc=FALSE;
}
m_Set.Requery();
}
//单击索引
voidCBaDialog:
:
OnColumnclickList3(NMHDR*pNMHDR,LRESULT*pResult)
{
NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;//系统自动生成
//TODO:
Addyourcontrolnotificationhandlercodehere
if(FALSE==m_bS)
{
intk=pNMListView->iSubItem;//鼠标单击选择第几行
Sort(!
m_bIsAsc,k);
m_ListCtrlx.DeleteAllItems();
this->Show();//把数据库学