12 Apr 2012

c++选择文件对话框


收藏到CSDN网摘
c++打开选择文件对话框

或者直接这样调用
#include 
#include 
#include 
#include 
using namespace std;
#pragma comment(lib, "Comdlg32.lib")
// Gobal Variables and declarations.
//

int main()
{
    OPENFILENAME ofn ;
    // a another memory buffer to contain the file name
    char szFile[100] ;
    // open a file name
 ZeroMemory( &ofn , sizeof( ofn));
 ofn.lStructSize = sizeof ( ofn );
 ofn.hwndOwner = NULL  ;
 ofn.lpstrFile = szFile ;
 ofn.lpstrFile[0] = '\0';
 ofn.nMaxFile = sizeof( szFile );
 ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
 ofn.nFilterIndex = 1;
 ofn.lpstrTitle  = "test title" ;
 ofn.nMaxFileTitle = 0 ;
 ofn.lpstrInitialDir=NULL ;
 ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST ;
 GetOpenFileName( &ofn );

 // Now simpley display the file name
 string fname(ofn.lpstrFile);
 cout << fname << endl;
}
这是原来的函数
// get file name dialog
string GetFile( string &title )
{
// returned file name
char filename[255];

// title of the dialog
char lpsTitle[255];
strcpy(lpsTitle,(LPCSTR)title.c_str());

// initial path
LPCSTR initialPath = "C:\\";

// strucutre
OPENFILENAME ofn;
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = filename;
ofn.lpstrFile[0] = '\0'; // doesn't use filename content to initialise itself
ofn.nMaxFile = sizeof(filename);
ofn.lpstrFilter = "XML File (*.xml)\0*.xml\0";
ofn.lpstrFileTitle = lpsTitle;
ofn.lpstrInitialDir = initialPath;
ofn.Flags = OFN_PATHMUSTEXIST | // path must exist
OFN_FILEMUSTEXIST |   // file must exist
OFN_DONTADDTORECENT |  // don't add to recent file
OFN_ENABLESIZING |   // enable size the dialog
OFN_NONETWORKBUTTON;  // no network path

if (GetOpenFileName(&ofn)==TRUE)
{
string file(ofn.lpstrFile);
return file;
}
else
{
return "";
}
}

No comments :

Post a Comment