zoukankan      html  css  js  c++  java
  • 打开文件对话框和文件夹对话框之MFC和API实现

    一、利用API实现打开文件对话框和利用MFC来实现打开文件对话框。

    方法一:API部分:

     1 OPENFILENAME ofn;
    2 char szFile[MAX_PATH];
    3 ZeroMemory(&ofn,sizeof(ofn));
    4 ofn.lStructSize = sizeof(ofn);
    5 ofn.lpstrFile = szFile;
    6 ofn.lpstrFile[0] = TEXT('\0');
    7 ofn.nMaxFile = sizeof(szFile);
    8 ofn.lpstrFilter = TEXT("all\0*.*\0jpg\0*.jpg\0bmp\0*.bmp\0"); //定义三个选项,all,text和exe
    9 ofn.nFilterIndex = 1; //定义首选项是哪一个
    10 ofn.lpstrFileTitle = NULL;
    11 ofn.nMaxFileTitle = 0;
    12 ofn.lpstrInitialDir = NULL;
    13 ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    14 if(GetOpenFileName(&ofn))
    15 {
    16 ::SetDlgItemText(this->m_hWnd,IDC_EDIT1,szFile);
    17 }

    方法二、MFC实现

    CFileDialog dlg(TRUE, NULL, NULL,
    OFN_HIDEREADONLY
    | OFN_OVERWRITEPROMPT,
    NULL);

    if(dlg.DoModal() == IDOK)
    {
    szFilename
    = dlg.GetPathName();
    ::MessageBox(NULL,szFilename,NULL,MB_OK);
    }

    注意:打开文件的方式和打开文件夹的方式是不同的。打开文件的方式是不断的打开直到出现末端为文件,否则遇到文件夹还要继续打开。而打开文件夹则是只要选择到一个路径的文件夹就打开。

    下面的这种方式是打开文件夹MFC实现。

          

     static TCHAR strDirName[MAX_PATH];

    BROWSEINFO bi;
    CString szString
    = TEXT("选择一个源文件子文件夹");
    bi.hwndOwner
    = ::GetFocus();
    bi.pidlRoot
    = NULL;
    bi.pszDisplayName
    = strDirName;
    bi.lpszTitle
    = szString;
    bi.ulFlags
    = BIF_BROWSEFORCOMPUTER | BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;
    bi.lpfn
    = NULL;
    bi.lParam
    = 0;
    bi.iImage
    = 0;

    LPITEMIDLIST pItemIDList
    = ::SHBrowseForFolder(&bi);
    if(pItemIDList == NULL)
    {
    return ;
    }

    ::SHGetPathFromIDList(pItemIDList, strDirName);

    CString str
    = strDirName;
    if(str != "" && str.Right(1) != '\\')
    str
    += '\\';
    ::SetDlgItemText(
    this->m_hWnd,IDC_EDIT1,str);

      

    trackback: http://www.cppblog.com/deercoder/articles/103065.html



  • 相关阅读:
    Android Studio踩的坑之导入别人的Android Studio项目
    获取已发布微信小游戏和小程序源码
    小程序第三方框架对比 ( wepy / mpvue / taro )
    项目中常用的MySQL 优化
    最全反爬虫技术
    MySQL Explain详解
    php接口安全设计
    PHP进程间通信
    PHP进程及进程间通信
    springBoot优雅停服务配置
  • 原文地址:https://www.cnblogs.com/JohnShao/p/2161478.html
Copyright © 2011-2022 走看看