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

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

上一篇:mysql连接错误:Cannot get hostname for your address


下一篇:Providers、Controller 、Service、DirectiveFactory