この記事は2019年01月08日に投稿しました。
この記事は2020年07月26日に更新しました。
目次
かんたん Visual C++ [改訂2版] (プログラミングの教科書)
- 作者:堀 義博
- 発売日: 2017/10/13
- メディア: 単行本(ソフトカバー)
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているMFCでファイルを開く/ファイル名を指定して保存するダイアログを表示する方法についてです。
2. MFCでファイルを開く/ファイル名を指定して保存するダイアログを表示する
MFCでファイルを開く/ファイル名を指定して保存するダイアログを表示するには、CFileDialogクラスを使用します。
書式
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL, DWORD dwSize = 0, BOOL bVistaStyle = TRUE);
引数
bOpenFileDialog
ダイアログの種類を指定します。
TRUEの場合、ファイルを開くダイアログになります。
FALSEの場合、ファイル名をつけて保存するダイアログになります。
lpszDefExt
既定のファイルの拡張子を指定します。
NULLの場合、既定ファイル無しとなります。
lpszFileName
初期表示されるファイル名を指定します。
NULLの場合、ファイル名は表示されません。
dwFlags
カスタマイズするフラグを1つまたは複数指定します。
設定できる定数はOPENFILENAMEA構造体のFlagsを参照してください。
lpszFilter
対象とするファイルをフィルターする文字列を指定します。
設定する項目は、"フィルターするファイルの説明"と"そのファイルの拡張子"を組みとして、"|"で連結します。
具体的には下記の実装例を参照してください。
pParentWnd
親ウィンドウへのポインタを指定します。
dwSize
OPENFILENAME構造体のサイズを指定します。
0を指定した場合、適切なサイズが設定されます。
bVistaStyle
新しいスタイルのダイアログを指定します。
VisualStudio2008以降、かつ対象のOSがWindows Vista以降の場合、有効です。
TRUEの場合、新しいスタイルになります。
FALSEの場合、古いスタイルになります。
実装例
#define DEF_EXT _T("*.c") #define FILTER _T("ソースファイル(*.c)|*.c|ヘッダファイル(*.h)|*.h") // ファイルを開くダイアログを表示します。 // 第1引数をFALSEにすると、ファイル名をつけて保存するダイアログになります。 CFileDialog dlg(TRUE, DEF_EXT, NULL, 0, FILTER); if (dlg.DoModal() == IDOK) { // 開くボタンを押下した場合 } else { // キャンセルボタンを押下した場合 }
3. おわりに
MFCでファイルを開く/ファイル名を指定して保存する処理は、専用のダイアログが用意されているので簡単に実装できます。
エンジニアによるエンジニアのためのサイト始まる!!【teratail】
標準講座MFC6.0―Visual C++による効率的なWindowsプログラミング (Programmer’s SELECTION)
- 作者:ハーバート シルト
- 発売日: 1999/04/01
- メディア: 単行本
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688