9月3
首先构造一个对象并提供相应的参数,构造函数原型如下:
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
参数意义如下:
bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
lpszDefExt 指定默认的文件扩展名。
lpszFileName 指定默认的文件名。
dwFlags 指明一些特定风格。
lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如: "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
pParentWnd 为父窗口指针。
创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:
CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt
CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt
CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
CColorDialog颜色选择对话框的使用:首先通过CColorDialog::CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL )构造一个对象,其中clrInit为初始颜色。通过调用DoModal()创建对话框,在返回后调用COLORREF CColorDialog::GetColor( )得到用户选择的颜色值。
CFontDialog字体选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFontDialog::CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );构造一个对象,其中参数lplfInitial指向一个LOGFONG结构.如果该参数设置为NULL表示不设置初始字体。pdcPrinter指向一个代表打印机设备环境的DC对象,若设置该参数则选择的字体就为打印机所用。pParentWnd用于指定父窗口。通过调用DoModal()创建对话框,在返回后通过调用以下函数来得到用户选择:
void CFontDialog::GetCurrentFont( LPLOGFONT lplf );用来获得所选字体的属性。该函数有一个参数,该参数是指向LOGFONT结构的指针,函数将所选字体的各种属性写入这个LOGFONT结构中。
CString CFontDialog::GetFaceName( ) 得到所选字体名字。
int CFontDialog::GetSize( ) 得到所选字体的尺寸(以10个象素为单位)。
COLORREF CFontDialog::GetColor( ) 得到所选字体的颜色。
BOOL CFontDialog::IsStrikeOut( ) BOOL CFontDialog::IsUnderline( ) BOOL CFontDialog::IsBold( ) BOOL CFontDialog::IsItalic( ) 得到所选字体的其他属性,是否有删除线,是否有下划线,是否为粗体,是否为斜体。
需要注意的是,用了CFileDialog之后,会把程序的当前路径设置成选中文件的路径所以,如果程序里有用到IO访问或者数据库访问之类的本地操作时,需要注意你的当前路径用相对路径的话就不是原来你的程序路径了,切记!
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
参数意义如下:
bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
lpszDefExt 指定默认的文件扩展名。
lpszFileName 指定默认的文件名。
dwFlags 指明一些特定风格。
lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如: "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
pParentWnd 为父窗口指针。
创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:
CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:\test\test1.txt
CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt
CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
CColorDialog颜色选择对话框的使用:首先通过CColorDialog::CColorDialog( COLORREF clrInit = 0, DWORD dwFlags = 0, CWnd* pParentWnd = NULL )构造一个对象,其中clrInit为初始颜色。通过调用DoModal()创建对话框,在返回后调用COLORREF CColorDialog::GetColor( )得到用户选择的颜色值。
CFontDialog字体选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFontDialog::CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );构造一个对象,其中参数lplfInitial指向一个LOGFONG结构.如果该参数设置为NULL表示不设置初始字体。pdcPrinter指向一个代表打印机设备环境的DC对象,若设置该参数则选择的字体就为打印机所用。pParentWnd用于指定父窗口。通过调用DoModal()创建对话框,在返回后通过调用以下函数来得到用户选择:
void CFontDialog::GetCurrentFont( LPLOGFONT lplf );用来获得所选字体的属性。该函数有一个参数,该参数是指向LOGFONT结构的指针,函数将所选字体的各种属性写入这个LOGFONT结构中。
CString CFontDialog::GetFaceName( ) 得到所选字体名字。
int CFontDialog::GetSize( ) 得到所选字体的尺寸(以10个象素为单位)。
COLORREF CFontDialog::GetColor( ) 得到所选字体的颜色。
BOOL CFontDialog::IsStrikeOut( ) BOOL CFontDialog::IsUnderline( ) BOOL CFontDialog::IsBold( ) BOOL CFontDialog::IsItalic( ) 得到所选字体的其他属性,是否有删除线,是否有下划线,是否为粗体,是否为斜体。
需要注意的是,用了CFileDialog之后,会把程序的当前路径设置成选中文件的路径所以,如果程序里有用到IO访问或者数据库访问之类的本地操作时,需要注意你的当前路径用相对路径的话就不是原来你的程序路径了,切记!
CFileDialog dllDlg(TRUE);
char tempPath[256];
GetCurrentDirectoryA(255, tempPath);
if(dllDlg.DoModal() == IDOK);
SetCurrentDirectoryA(tempPath);
char tempPath[256];
GetCurrentDirectoryA(255, tempPath);
if(dllDlg.DoModal() == IDOK);
SetCurrentDirectoryA(tempPath);
引用
如何进行文件操作
取得文件名
{
CString
FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}
相关信息:CFileDialog 用于取文件名的几个成员函数:
假如选择的文件是C:\\WINDOWS\\TEST.EXE
则:
(1)GetPathName();取文件名全称,包括完整路径。取回C:\\WINDOWS\\TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取扩展名EXE
打开文件
CFile file(\"C:\\HELLO.TXT\",CFile::modeRead);///只读方式打开
///CFile::modeRead可改为 CFile::modeWrite(只写),CFile::modeReadWrite(读写),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open(\"C:\\HELLO.TXT\",CFile::modeCreate|Cfile::modeWrite);
...
...
}
移动文件指针
file.Seek(100,CFile::begin);///从文件头开始往下移动100字节
file.Seek(-50,CFile::end);///从文件末尾往上移动50字节
file.Seek(-30,CFile::current);///从当前位置往上移动30字节
file.SeekToBegin();///移到文件头
file.SeekToEnd();///移到文件尾
读写文件
读文件:
char buffer[1000];
file.Read(buffer,1000);
写文件:
CString string(\"这个世界只有偏执狂才能成功\");
file.Write(string,8);
关闭文件
file.Close();
DoModal()是窗口类的成员函数,函数代码系统已经写好了的,只需要用建立过类对象(如C**Dlg),对DoModal()(如C**Dlg.DoModal())进行调用即可,调用该函数的作用是弹出一个对话框。
主要作用是
1.在DoModal里加载了对话框资源并调用CreateDlgIndirect()创建对话框
2.使对话框进入有模式消息循环:
DWORD dwFlags=MLF_SHOWONIDLE;
if(GetStyl()&DS_NOIDLEMSG;
VERIFY(RunModalLoop(dwFlags)==m_nModalResult;
3.在消息循环结束得时候销毁窗口,释放资源:
DestroyWindow();
PostModal();
UnlockResource(hDialogTemplate);
FreeResource(hDialogTemplat);
GetPathName()函数用来取得文件所在路径的全名
UpdateData()函数:
UpdateData(TRUE);//把界面中控件的当前值传给和控件变量
UpdateData(FALSE);//把控件变量中的值显示在界面的控件中UpdateData函数是有返回值的,可以利用其返回值判断输入变量的合法性,如:你规定了某个文本框的输入变量类型或者取值范围,而用户输入时不符合你的要求便可以通过该函数的返回值进行判断。
在对话框初始化的时候或者从新显示对话框中的信息的时候用
比如对话框中有个editctrl,成员变量是CString m_str
在初始化的时候m_str = \"aaa\";
Updatedata(FALSE);
这样就是在editctrl中显示了aaa
如果在editctrl中改变成了bbb,为了让m_str也变成bbb
就要Updatedata(TRUE);
CString str = m_str;
这样str就是\"bbb\"了
取得文件名
{
CString
FilePathName;
CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}
相关信息:CFileDialog 用于取文件名的几个成员函数:
假如选择的文件是C:\\WINDOWS\\TEST.EXE
则:
(1)GetPathName();取文件名全称,包括完整路径。取回C:\\WINDOWS\\TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取扩展名EXE
打开文件
CFile file(\"C:\\HELLO.TXT\",CFile::modeRead);///只读方式打开
///CFile::modeRead可改为 CFile::modeWrite(只写),CFile::modeReadWrite(读写),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open(\"C:\\HELLO.TXT\",CFile::modeCreate|Cfile::modeWrite);
...
...
}
移动文件指针
file.Seek(100,CFile::begin);///从文件头开始往下移动100字节
file.Seek(-50,CFile::end);///从文件末尾往上移动50字节
file.Seek(-30,CFile::current);///从当前位置往上移动30字节
file.SeekToBegin();///移到文件头
file.SeekToEnd();///移到文件尾
读写文件
读文件:
char buffer[1000];
file.Read(buffer,1000);
写文件:
CString string(\"这个世界只有偏执狂才能成功\");
file.Write(string,8);
关闭文件
file.Close();
DoModal()是窗口类的成员函数,函数代码系统已经写好了的,只需要用建立过类对象(如C**Dlg),对DoModal()(如C**Dlg.DoModal())进行调用即可,调用该函数的作用是弹出一个对话框。
主要作用是
1.在DoModal里加载了对话框资源并调用CreateDlgIndirect()创建对话框
2.使对话框进入有模式消息循环:
DWORD dwFlags=MLF_SHOWONIDLE;
if(GetStyl()&DS_NOIDLEMSG;
VERIFY(RunModalLoop(dwFlags)==m_nModalResult;
3.在消息循环结束得时候销毁窗口,释放资源:
DestroyWindow();
PostModal();
UnlockResource(hDialogTemplate);
FreeResource(hDialogTemplat);
GetPathName()函数用来取得文件所在路径的全名
UpdateData()函数:
UpdateData(TRUE);//把界面中控件的当前值传给和控件变量
UpdateData(FALSE);//把控件变量中的值显示在界面的控件中UpdateData函数是有返回值的,可以利用其返回值判断输入变量的合法性,如:你规定了某个文本框的输入变量类型或者取值范围,而用户输入时不符合你的要求便可以通过该函数的返回值进行判断。
在对话框初始化的时候或者从新显示对话框中的信息的时候用
比如对话框中有个editctrl,成员变量是CString m_str
在初始化的时候m_str = \"aaa\";
Updatedata(FALSE);
这样就是在editctrl中显示了aaa
如果在editctrl中改变成了bbb,为了让m_str也变成bbb
就要Updatedata(TRUE);
CString str = m_str;
这样str就是\"bbb\"了
出处:网络
转载时必须以链接形式注明出处及本声明!
Visual C++开发工具与调试技巧整理
直接用socket实现HTTP协议(下载专用)(可获取HTTP服务器返回


