Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / desktop / MFC

CFileDialog in a Console Application

0.00/5 (No votes)
23 Jan 2012CPOL 16.7K  
CFileDialog in a Console Application

Introduction


How to add a CFileDialog, to a Console application.

Background


Sometimes, you would like to Open a text file without the need of an argument for the EXE.

Using the Code


Just add the following code and add the appropriate include files.

In your stdafx.h file.


// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

#define _AFXDLL
#include "targetver.h"

#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <cctype>
#include <conio.h>
#include <iomanip>
#include <afxdlgs.h>
#include <atlstr.h>

The main project file.
//
// Any source code blocks look like this:
//
#include "stdafx.h"
#include "console.h"

using namespace std;
	CString szFileName = "";
	CString szFilter = "Text Files(*.txt)|*.txt|All Files(*.*)|*.*";
	char ch;
	cout << "Open File 'y' or 'Y' ? ";
	cin >> ch;
	if((ch == 'y') || (ch == 'Y'))
	{
		CWnd* pWnd = CWnd::FromHandle(GetForegroundWindow()); 
		CFileDialog dlg(TRUE, _T("*.txt"), _T("*.txt"), NULL, szFilter, pWnd);
		dlg.m_ofn.Flags |= OFN_FILEMUSTEXIST;
		dlg.m_ofn.lpstrTitle = _T("Read a text file");
		if(dlg.DoModal() == IDOK)
		{
			szFileName = dlg.GetPathName();
		}
	}
	cin.get();
	if(szFileName.IsEmpty())
	{
		szFileName = "ReadMe.txt";
	}
	ifstream in(szFileName, ios::in | ios::binary);
	if(!in) {
		cout << "Cannot open input file.\n";
		cout << "Press any key to Exit!";
		while(!_kbhit())
			Sleep(2);
		return 1;
	}
...

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)