最近做了几个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;
一 数据类型的转换
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;