mfc 常用控件使用方法及常见数据类型转换

最近做了几个mfc小程序,想把我们经常用到而又经常忘记的的小知识记下来

一 数据类型的转换

1 int 到CString

CString str;

int tid=12,sno=21;
str.Format("SELECT * FROM tiankong where ID=%d and sno=%d",tid,sno);

2 CString 到int

CString str="asfassdfs";

const char * pBuffs=LPCTSTR(str);
int s=atoi(pBuffs);

或者读文件时

CString flag;

char TempStr1[10];

memset(TempStr1,'\0',10);
file.ReadString(flag);//读取第一行数据,第一行数据为坐标点数据
sscanf(flag,"%s",TempStr1);
int iflag = atoi(TempStr1);

3 int 到char[]

char str[255];

int i=1234;

sprintf(str,"字符串:%d",i);

二 列表

1 列表设置扩展样式

m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT );//有网格,能选中一行

2 添加列属性及设置列大小

m_list.InsertColumn(0, _T("名称"), LVCFMT_LEFT);
m_list.InsertColumn(1, _T("类型"), LVCFMT_LEFT);
m_list.InsertColumn(2,_T("父目录"), LVCFMT_LEFT);
m_list.InsertColumn(3,_T("创建用户"), LVCFMT_LEFT);
m_list.InsertColumn(4,_T("备注"), LVCFMT_LEFT);
//SP-A3.设置各个栏的宽度
m_list.SetColumnWidth(0,100);
m_list.SetColumnWidth(1,50);
m_list.SetColumnWidth(2,100);
m_list.SetColumnWidth(3,100);
m_list.SetColumnWidth(4,100);

3 添加数据

int nRow=m_list.InsertItem(0,"");
if(cd->d[i].d_flag==1)
type="目录";
else type="文件";
m_list.SetItemText(nRow,0,cd->d[i].d_name);
m_list.SetItemText(nRow,1,type);
if(cd->d[i].d_parent)
m_list.SetItemText(nRow,2,cd->d[i].d_parent->d_name);
m_list.SetItemText(nRow,3,cd->d[i].user);

4 获得选中的一行

int nItem = -1;
LPNMITEMACTIVATE lpNMItemActivate = (LPNMITEMACTIVATE)pNMHDR;
if(lpNMItemActivate != NULL)
{
nItem = lpNMItemActivate->iItem;
}
else return;
if(nItem<0) return;
m_list.SetItemState(nItem,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_list.SetHotItem(nItem);

三 树形控件

1 添加数据

m_tree.DeleteAllItems();
HTREEITEM hItem,hSubItem;
hItem =m_tree.InsertItem("根目录",TVI_ROOT);//在根结点上添加Parent1
hSubItem =m_tree.InsertItem(cd->d[0].d_name,hItem);//在Parent1上添加一个子结点
hSubItem =m_tree.InsertItem(cd->d[1].d_name,hItem ,hSubItem);//在Parent1上添加一个子结点,排在Child1_1后面
hSubItem =m_tree.InsertItem(cd->f[0].f_name,hSubItem);//在Parent1上添加一个子结点,排在Child1_1后面

四 文件

1 写一行

CString str="";
CStdioFile file;
file.Open(filename,CFile::modeCreate|CFile::modeWrite);

str.Format("%d\r\n",d.flag);
file.WriteString(str);

file.Close();

2 读一行

CStdioFile file;
file.Open(filename,CFile::modeRead);
CString flag="";
int iflag;
//if(!file.ReadString(flag));
char TempStr1[10];

memset(TempStr1,'\0',10);
file.ReadString(flag);//读取第一行数据,第一行数据为坐标点数据
sscanf(flag,"%s",TempStr1);
iflag = atoi(TempStr1);
//MessageBox(flag);
五 其他

1 建立对话框

login.Create(IDD_LOGIN,this->GetDesktopWindow());

this->ShowWindow(false);
//dlg.SetParent(this->GetDesktopWindow());
// login.ShowWindow(SW_SHOW);
login.DoModal();

2 获得对话框

CFileApp *ca= (CFileApp *)AfxGetApp();
//AfxGetApp()-> m_pMainWnd->GetDlgItem
CFileDlg * cd=(CFileDlg * )ca->m_pMainWnd;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值