CFileDialog(文件夹对话框类)

主要用于文件的保存,另存,打开,关闭等功能

功能“另存为”的实现:

 void CTXTDlg::OnFileSaveas()
{
LPCTSTR szFilter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||";      //过滤器设置,注意格式  
CFileDialog fd(FALSE,"txt",NULL,OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST|  //fd初始化
OFN_FILEMUSTEXIST|OFN_CREATEPROMPT,szFilter);              //
if(IDCANCEL == fd.DoModal())
return;
CString szFile = fd.GetPathName();                      //获取文件路径(全路径)
CFile file;                                   //通过file对文件进行操作
if(!file.Open(szFile,CFile::modeWrite|CFile::modeCreate))         //打开文件
{
MessageBox(fd.GetFileName() + " 保存文件时失败!",NULL,MB_ICONEXCLAMATION);
return;
}
m_szFile = szFile;
CString szText;
GetDlgItemText(IDC_TEXT,szFile);                  
file.Write(szText,szText.GetLength());                    //写入控件中获取出来的数据
file.Close();                                    //关闭文件
CEdit*pEdit = (CEdit*)GetDlgItem(IDC_TEXT);
pEdit->SetModify(FALSE);                            //保存之后设置修改状态,关闭时不提示
SetTitle(); }

CFile 封装了m_hFile句柄,可以对文件进行打开、关闭、读写等操作

CFileDialog 主要是初始化时候的设置(以读取的方式还是保存的方式打开)还有过滤器的设置问题

CEdit 编辑框控件

CFontDialog(字体设置对话框类)

主要用于字体设置功能包括字体的字号,粗体,斜体,下划线删除线等

void CTXTDlg::OnFormatFont()
{
CFont *pFont = GetDlgItem(IDC_TEXT)->GetFont();
LOGFONT lf; //描述的了Font的属性,包括高宽、字号、斜体、下划线等
pFont->GetLogFont(&lf); //fill LOGFONT,将获取的字体格式放到lf中
CFontDialog fd(&lf);               //CFont属性对话框,并填充当前属性(lf),将lf格式放到fd中,对fd初始化
    if(IDCANCEL == fd.DoModal())
return;
fd.GetCurrentFont(&lf); //将新的格式放入lf中
m_font.DeleteObject();              //删除原有格式
m_font.CreateFontIndirect(&lf);         //存入当前格式
GetDlgItem(IDC_TEXT)->SetFont(&m_font);    //设置当前格式到控件中 }

LOGFONT是一个保存字体属性的结构体

typedef struct tagLOGFONTW
{
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
WCHAR lfFaceName[LF_FACESIZE];
} LOGFONTW, *PLOGFONTW, NEAR *NPLOGFONTW, FAR *LPLOGFONTW;

LOGFONT:   一个结构,用来逻辑上表达一个字体,比如LOGFONT.lfFaceName是字体的名字

HFONT:   一个句柄,相当于表示内存中的一个字体对象,它可以马上拿来用

CFont:   是mfc对于HFONT的一种封装,是用来对句柄操作的类

我的理解是:LOGFONT被HFONT封装,HFONT又被CFont封装。

CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习的更多相关文章

  1. GUI颜色、字体设置对话框

    %颜色设置对话框 uisetcolor %c 红色 c=uisetcolor %默认规定颜色 c=uisetcolor([ ]); %设置曲线颜色 h = plot([:]); c = uisetco ...

  2. 统计文件夹下java代码行数的小程序--主要是学习任务队列的思想

    首先感谢czbk的老师,录制的视频,让我们有这么好的学习资料.……—— 统计文件夹java文件的行数,首先想到的肯定是用递归的方法,因为文件夹下面可能包含文件夹,用递归的方法,代码容易写.(这和写简单 ...

  3. win10无法新建文件夹怎么办 win10右键新建菜单设置方法

    有朋友安装了win10系统后发现右键菜单中没有新建项,而平时使用新建 - 文件夹项的机率很高.如何才能恢复桌面右键菜单中的新建项呢? 右键点击桌面空白处,在右键菜单中发现没有新建项: 桌面右键菜单没有 ...

  4. 任意文件夹下打开cmd功能的设置(win10)

    win10中打开cmd的方法: 1."运行"中输入CMD打开,也可以按住win+R 2.选择命令行工具中"开始-->>所有应用-->>Window ...

  5. QT学习 之 对话框 (四) 字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

    QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的 ...

  6. ZIP解压缩文件的工具类【支持多级文件夹|全】

    ZIP解压缩文件的工具类[支持多级文件夹|全] 作者:Vashon 网上有非常多的加压缩演示样例代码.可是都仅仅是支持一级文件夹的操作.假设存在多级文件夹的话就不行了. 本解压缩工具类经过多次检查及重 ...

  7. 使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹

    2018-11-05 20:57:00开始写 Folder.java类 import javax.swing.JFrame; import javax.swing.JPanel; import jav ...

  8. Win10系列:JavaScript访问文件和文件夹

    在实际开发中经常会遇到访问文件的情况,因此学习与文件有关的操作对程序开发很有帮助,关于文件操作的一些基本技术,在前面章节中有专门基于C#语言的详细讲解,本节主要介绍如何使用HTML5和JavaScri ...

  9. Windows各个文件夹介绍

    windows文件介绍 总结 ├WINDOWS │ ├-system32(存放Windows的系统文件和硬件驱动程序) │ │ ├-config(用户配置信息和密码信息) │ │ │ └-system ...

随机推荐

  1. 关于Oracle AUTONOMOUS TRANSACTION(自治事务)的介绍

    AUTONOMOUS TRANSACTION(自治事务)的介绍 在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题,比如想在执行当前一个由多个DML组成的transaction(事 ...

  2. PhpStorm XDebug 远程调试

    现在我们自己公司的各种开发和测试服务器,都是使用阿里云的服务器.一些PHP的项目,无法在本地搭建完整的环境,在外网服务器上调试更方便定位问题.发现网上没有完整的关于如何配置PHPStorm和XDebu ...

  3. jQuery EasyUI视频教程合集

    下载地址:http://www.fu83.cn/thread-269-1-1.html 教程内容: 尚学堂科技_jqueryeasyui视频教程_白贺翔 李炎恢jQuery EasyUI视频教程全集 ...

  4. 手机网页Html代码实现(解决显示页面很小的问题)

    工作需要,要做一个手机自适应的网页效果,终于搞定,先分享并记录! 其实主要就是改掉HTML页面声明: 在网页中加入以下代码,就可以正常显示了: <meta name="viewport ...

  5. MVP之V和P的交互

    三者之间的关系 在MVP初探里简单的描述了V和P之间是如何交互的. 无论是PV还是SC,M\V\P这三者之间的关系并没有发生改变,V只是前端的客户代理承现展显数据,P是如何处理客户交互行为的决策者. ...

  6. Linux(CentOs6.4)安装Git

    安装之前我们先来了解下git,并且要反问下:我为什么要使用git?svn用的不是很好嘛,我干嘛要换?... 问1:为什么需要版本控制系统? 版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订 ...

  7. C语言编程实现Linux命令——who

    C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...

  8. 琴弦文字 - jquery插件

    这是一个基于jquery的琴弦效果插件. 以前曾经见过这个效果,有过尝试的想法但是当时技能点还不够. 前天在火车上偶然想起这个,认真思索了一下,一气呵成 :D 看来最近技能树点偏的不太远. 效果展示 ...

  9. C#的前世今生,学会C#还能找到高薪工作吗?

    其实C#,.net正在逐步淡出程序员的视野是正在发生的现实,量子及量子的小伙伴们,还在坚持写C#代码的人几乎没有了,回忆起过去那些写C#时候的美好时光,真是不胜唏嘘,最近园子里的一篇<C#程序员 ...

  10. kuangbin专题总结一 简单搜索

    A - 棋盘问题:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有 ...