cfiledialog(c++ CFileDialog m_ofn用法)

:暂无数据 2026-04-12 09:20:01 0
您是否正在为搞不清cfiledialogc++ CFileDialog m_ofn用法的关系而烦恼?恭喜,这篇干货就是您的“及时雨”。

本文目录

c++ CFileDialog m_ofn用法

// OFN_NOCHANGEDIR就是不改变当前目录
CFileDialog openDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT||OFN_NOCHANGEDIR,"音效文件 (*.wav)|*.wav|所有文件 (*.*)|*.*||");
openDlg.m_ofn.lpstrInitialDir=".\\Save";
   if (IDOK==openDlg.DoModal())
   {
     // openDlg.m_ofn.lpstrInitialDir=".\\";
   c_sound.PlayBGMusic(1);
   }

CFileDialog保存文件问题

在 pFileDlg-》m_ofn.lpstrFile=cf; 前加上下面这句话:
pFileDlg-》m_ofn.nMaxFile = 256;
运行通过
原因如下:
MSDN中关于CFileDialog有以下原文:
Do this by replacing m_ofn.lpstrFile with a pointer to a buffer you have allocated, after c***tructing the CFileDialog, but before calling DoModal. Additionally, you must set m_ofn.nMaxFile with the number of characters in the buffer pointed to by m_ofn.lpstrFile.
大意就是要指定nMaxFile值,否则你在按下保存后
pFileDlg变为NULL了(与API的内部实现方式有关)

WTL中的CFileDialog使用

class CMyFileDialog : public CFileDialogImpl《CMyFileDialog》
{
public:
    // C***truction
    CMyFileDialog ( BOOL bOpenFileDialog,
                    _U_STRINGorID szDefExt = 0U,
                    _U_STRINGorID szFileName = 0U, 
                    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
                    _U_STRINGorID szFilter = 0U,
                    HWND hwndParent = NULL );
    // Maps
    BEGIN_M**_MAP(CMyFileDialog)
        CHAIN_M**_MAP(CFileDialogImpl《CMyFileDialog》)
    END_M**_MAP()
    // Overrides
    void OnInitDone ( LPOFNOTIFY lpon );
protected:
    CString m_sDefExt, m_sFileName, m_sFilter;
    LPCTSTR PrepFilterString ( CString& sFilter );
};

//////////////////////////////////////////////////////////////////////
// CMyFileDialog
CMyFileDialog::CMyFileDialog (
    BOOL bOpenFileDialog, _U_STRINGorID szDefExt, _U_STRINGorID szFileName, 
    DWORD dwFlags, _U_STRINGorID szFilter, HWND hwndParent ) :
        CFileDialogImpl《CMyFileDialog》(bOpenFileDialog, NULL, NULL, 0,
                                       NULL, hwndParent),
        m_sDefExt(szDefExt.m_lpstr), m_sFileName(szFileName.m_lpstr),
        m_sFilter(szFilter.m_lpstr)
{
    m_ofn.lpstrDefExt = m_sDefExt;
    m_ofn.Flags |= dwFlags;
    m_ofn.lpstrFilter = PrepFilterString ( m_sFilter );
    // setup initial file name
    if ( !m_sFileName.IsEmpty() )
        lstrcpyn ( m_szFileName, m_sFileName, _MAX_PATH );
}
 
void CMyFileDialog::OnInitDone ( LPOFNOTIFY lpon )
{
    GetFileDialogWindow().CenterWindow ( lpon-》lpOFN-》hwndOwner );
}
LPCTSTR CMyFileDialog::PrepFilterString ( CString& sFilter )
{
LPTSTR psz = sFilter.GetBuffer(0);
LPCTSTR pszRet = psz;
    
    while ( ’\0’ != *psz )
        {
        if ( ’|’ == *psz )
            *psz++ = ’\0’;
        else
            psz = CharNext ( psz );
        }
    
    return pszRet;
}

使用方法:

CMyFileDialog fd (true, _T("*.*"));
if ( IDOK == fd.DoModal(*this) )
{
USES_CONVERSION;
char* pFilePath = T2A(fd.m_szFileName);
}

关于MFC的CFileDialog类的问题

太复杂,CFileDialog本来就有个文件同名提示选项,
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
OFN_OVERWRITEPROMPT?

本文系统阐述了cfiledialog及其关键组成部分c++ CFileDialog m_ofn用法的定义、特点与关联。更多扩展内容,可参阅相关条目。
本文编辑:admin

更多文章:


tensorflow文档(如何理解tensorflow中的dimension)

tensorflow文档(如何理解tensorflow中的dimension)

嗨,正在屏幕前搜索tensorflow文档的你,是否也被如何理解tensorflow中的dimension的问题困扰过?今天这篇内容就是为你准备的。

2026年4月12日 11:40

mysql触发器语句(phpmyadmin的mysql触发器如何操作)

mysql触发器语句(phpmyadmin的mysql触发器如何操作)

关于mysql触发器语句,有一个概念至关重要,那就是phpmyadmin的mysql触发器如何操作。它为何如此重要?且听我们慢慢道来。

2026年4月12日 11:20

通用对话框的初始路径(如何还原cmd初始路径)

通用对话框的初始路径(如何还原cmd初始路径)

正如一位名家所言:“弄懂如何还原cmd初始路径,是通往通用对话框的初始路径殿堂的捷径。” 今天,我们就来走一走这条捷径。

2026年4月12日 11:00

构造函数的作用c(c++类中,默认构造函数究竟有什么作用为何声明对象后就要自动调用它这有何意义)

构造函数的作用c(c++类中,默认构造函数究竟有什么作用为何声明对象后就要自动调用它这有何意义)

想知道那些精通构造函数的作用c的人,是如何看待c++类中,默认构造函数究竟有什么作用为何声明对象后就要自动调用它这有何意义的吗?本篇将为你揭秘他们的思考路径。

2026年4月12日 10:40

特效视频app(有什么可以美化视频的软件(视频美化软件app))

特效视频app(有什么可以美化视频的软件(视频美化软件app))

承接之前对特效视频app的讨论,本篇我们将视角下沉,专门来聊聊实操中无法回避的有什么可以美化视频的软件(视频美化软件app)问题,让知识落地。

2026年4月12日 10:20

学校厕所pooping大便a(英语国际上厕所怎么说)

学校厕所pooping大便a(英语国际上厕所怎么说)

回顾我学习学校厕所pooping大便a的经历,英语国际上厕所怎么说可算是一个重要的转折点。正是搞懂了它,一切才变得顺畅起来。

2026年4月12日 10:00

idea批量替换添加后缀(idea快捷键介绍)

idea批量替换添加后缀(idea快捷键介绍)

本篇关于idea批量替换添加后缀的讲解,将摒弃陈词滥调,直击idea快捷键介绍这一实战要害,给你可即刻应用的策略。

2026年4月12日 09:40

cfiledialog(c++ CFileDialog m_ofn用法)

cfiledialog(c++ CFileDialog m_ofn用法)

您是否正在为搞不清cfiledialog和c++ CFileDialog m_ofn用法的关系而烦恼?恭喜,这篇干货就是您的“及时雨”。

2026年4月12日 09:20

shell命令grep(grep赋值给变量为什么会变成一行)

shell命令grep(grep赋值给变量为什么会变成一行)

下面,我们将通过shell命令grep的概述、grep赋值给变量为什么会变成一行的详解以及总结展望三个部分,为您系统梳理这一主题。

2026年4月12日 09:00

英语在线朗读器(求推荐可以免费朗读英语句子的app)

英语在线朗读器(求推荐可以免费朗读英语句子的app)

大家好,关于英语在线朗读器很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于求推荐可以免费朗读英语句子的app的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年4月12日 08:40

最近更新

tensorflow文档(如何理解tensorflow中的dimension)
2026-04-12 11:40:02 浏览:0
cfiledialog(c++ CFileDialog m_ofn用法)
2026-04-12 09:20:01 浏览:0
热门文章

繁体字转换器(繁体字转化)
2026-04-04 18:00:01 浏览:0
androidbc(bc8-android是什么手机型号)
2026-04-05 07:20:02 浏览:0
标签列表