MFC学习的笔记
2016-01-16 14:20
162 查看
1.m_pMainWnd = &dlg;//影响AFXGetMainwindow(),为空指针时,以当前激活的窗口为主窗口,有利于子窗口的显示
2.xxdlg.DoModal()的返回值是IDCANCEL或IDOK,中途按取消退出程序
if(xxdlg.DoModal()==IDCANCEL)
OnCancel();
3.GetDlgItem()返回值是指针
4.设置动态标题CString Title=_T("标题");
Title+=theApp.m_info.NAME;
SetWindowText(Title);
MFC里有个现成的全局对象 theApp,可以直接在里面添加个成员变量来接收所需动态设置的内容,因为theApp是CXXApp这个类的对象,跨文件使用时可以用extern CQQApp theApp;
5.设置控件焦点方法:GetDlgItem(IDC_xx)->SetFocus();
6.控件隐藏或显示:GetDlgItem(IDC_xx)->EnableWindow(BOOL);FALSE禁用
CFile类
1.以写入模式打开文件
xx.Open(_T("./USER.dat"),CFile::modeWrite|CFile::modeCreate) //modeCreat不管文件存在与否,都会重新创建
如果不想删了重新创建就加个CFile::modeTruncate,如果文件本身50KB,写入30KB,最终文件大小还是50KB,分为刚刚写入的前30KB和20KB旧数据,存在覆盖的现象
如果不想覆盖,要续写,得在写入内容前把起点设置在文件结尾:file.SeekToEnd();
2.写入操作 xx.Write(&nUser,sizeof(nUser));
3.已读取模式打开文件
xx.Open(_T("./USER.dat"),CFile::shareDenyNone|CFile::modeRead) //shareDenyNone,共享打开,不会因为别的程序的打开而无法读取
4.读取直到文件结束
while(file.Read(&ru,sizeof(ru))==sizeof(ru))//要求一次读取ru大小的数,返回值为实际读取大小,当实际读取大小<ru大小说明到结尾了
{
对读取出的数据的操作。。。
}
CListCtrl和CComboBox类
操作列表和下拉框的方法
一:定义一个CListCtrl 对象 指向一个List控件,因为GetDlgItem()的返回值是Cwnd类指针,要强制转换成CListCtrl指针
如:CListCtrl * pList=(CListCtrl *)GetDlgItem(IDC_xx);
添加列:pList->InsertColumn(0,_T("账号"),0,150);
pList->InsertColumn(1,_T("密码"),0,150);
pList->InsertColumn(2,_T("权限"),0,150);
添加具体数据
pList->InsertItem(i,ru.NAME);
pList->SetItemText(i,1,ru.PASS);
pList->SetItemText(i,2,ru.Prior ?_T("高级"):_T("普通"));
如果不先调用InsertItem这个函数,后面的SetItemText 函数写了也不起作用,InsertItem起到向控件申请一行来放数据的作用。
添加CComboBox选项
pComb->AddString(_T("普通"));
pComb->AddString(_T("高级"));
二.CListCtrl一个对象my_list
my_list.SubclassDlgItem(IDC_XX,this);代替上面的强制转换为CListCtrl指针方法。
2.xxdlg.DoModal()的返回值是IDCANCEL或IDOK,中途按取消退出程序
if(xxdlg.DoModal()==IDCANCEL)
OnCancel();
3.GetDlgItem()返回值是指针
4.设置动态标题CString Title=_T("标题");
Title+=theApp.m_info.NAME;
SetWindowText(Title);
MFC里有个现成的全局对象 theApp,可以直接在里面添加个成员变量来接收所需动态设置的内容,因为theApp是CXXApp这个类的对象,跨文件使用时可以用extern CQQApp theApp;
5.设置控件焦点方法:GetDlgItem(IDC_xx)->SetFocus();
6.控件隐藏或显示:GetDlgItem(IDC_xx)->EnableWindow(BOOL);FALSE禁用
CFile类
1.以写入模式打开文件
xx.Open(_T("./USER.dat"),CFile::modeWrite|CFile::modeCreate) //modeCreat不管文件存在与否,都会重新创建
如果不想删了重新创建就加个CFile::modeTruncate,如果文件本身50KB,写入30KB,最终文件大小还是50KB,分为刚刚写入的前30KB和20KB旧数据,存在覆盖的现象
如果不想覆盖,要续写,得在写入内容前把起点设置在文件结尾:file.SeekToEnd();
2.写入操作 xx.Write(&nUser,sizeof(nUser));
3.已读取模式打开文件
xx.Open(_T("./USER.dat"),CFile::shareDenyNone|CFile::modeRead) //shareDenyNone,共享打开,不会因为别的程序的打开而无法读取
4.读取直到文件结束
while(file.Read(&ru,sizeof(ru))==sizeof(ru))//要求一次读取ru大小的数,返回值为实际读取大小,当实际读取大小<ru大小说明到结尾了
{
对读取出的数据的操作。。。
}
CListCtrl和CComboBox类
操作列表和下拉框的方法
一:定义一个CListCtrl 对象 指向一个List控件,因为GetDlgItem()的返回值是Cwnd类指针,要强制转换成CListCtrl指针
如:CListCtrl * pList=(CListCtrl *)GetDlgItem(IDC_xx);
添加列:pList->InsertColumn(0,_T("账号"),0,150);
pList->InsertColumn(1,_T("密码"),0,150);
pList->InsertColumn(2,_T("权限"),0,150);
添加具体数据
pList->InsertItem(i,ru.NAME);
pList->SetItemText(i,1,ru.PASS);
pList->SetItemText(i,2,ru.Prior ?_T("高级"):_T("普通"));
如果不先调用InsertItem这个函数,后面的SetItemText 函数写了也不起作用,InsertItem起到向控件申请一行来放数据的作用。
添加CComboBox选项
pComb->AddString(_T("普通"));
pComb->AddString(_T("高级"));
二.CListCtrl一个对象my_list
my_list.SubclassDlgItem(IDC_XX,this);代替上面的强制转换为CListCtrl指针方法。
相关文章推荐
- 关于多线程执行显示进度条的实例
- DELPHI IDFTP
- lock与C#多线程
- Zookeeper体系结构
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- 【51单片机】数据管的消影问题
- 下拉刷新 上拉分页 滑动删除listview
- Delphi 快捷键
- 今天尝试了下COMSOL计算热电耦合,
- android query方法各个参数的含义
- 将HDFS中的数据通过MapReduce产生HFile,然后将HFile导入到HBase具体案例分析
- List、Set、 数组等转字符串 (均通过str = StringUtils.join(set.toArray(), ",");)
- SpringMVC拦截器的实现
- 内存管理器(十九)存储器层次结构
- Delphi:ClientDataset+TDataSetProvider的数据保存问题
- Nginx重写规则
- django初始化设置
- 初始Zookeeper
- vsftp用户ftp能上传不能删除文件夹,用户组不对,umask
- Java雷达扫描图