• CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习


    CFileDialog(文件夹对话框类)

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

    功能“另存为”的实现:

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

    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封装。

  • 相关阅读:
    linux下安装elasticsearch5.6.3
    linux下安装git
    环境安装备忘录 Zookeeper
    环境安装备忘录 JDK
    环境安装备忘录 Tomcat
    MySql 通过show status 优化数据库性能
    MySQL执行计划解读 转他人文章
    2015年12月21日 my.cnf 配置
    mysql 如何查看my.cnf的 位置
    mysql状态查看 QPS/TPS/缓存命中率查看
  • 原文地址:https://www.cnblogs.com/laohan1221/p/5550979.html
Copyright © 2020-2023  润新知