Deriving a class from CFileDialog & displaying Open/Save dialog

When creating a dialog based app, I create a new class &
derive it from CFileDialog. I am trying to display the Open & Save dialog, but it doesen't work.  I've asked this question before and followed instructions from Answer2000.
Now I am getting a "unresolved external" error after I build the application. Here is a snippet of my code.
The class declaration is here:


#if !defined(AFX_FILEOPENSAVE_H__76822602_5EB8_11D2_AC74_444553540000__INCLUDED_)
#define AFX_FILEOPENSAVE_H__76822602_5EB8_11D2_AC74_444553540000__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// FileOpenSave.h : header file
/////////////////////////////////////////////////////////////////////////////
// CFileOpenSave dialog

class CFileOpenSave : public CFileDialog
{
      DECLARE_DYNAMIC(CFileOpenSave)

            
public:
      CFileOpenSave(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
            LPCTSTR lpszDefExt = NULL,
            LPCTSTR lpszFileName = NULL,
            DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
            LPCTSTR lpszFilter = NULL,
            CWnd* pParentWnd = NULL);
      

     
      CFileOpenSave(); //constructor function declared here

protected:
      //{{AFX_MSG(CFileOpenSave)
      afx_msg void OnFileOpen();
      //}}AFX_MSG
      DECLARE_MESSAGE_MAP()
};
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////

The .cpp file is here:

// FileOpenSave.cpp : implementation file
//

#include "stdafx.h"
#include "Table2.h"
#include "FileOpenSave.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFileOpenSave

IMPLEMENT_DYNAMIC(CFileOpenSave, CFileDialog)

CFileOpenSave::CFileOpenSave(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
            DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
            CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
}

      

BEGIN_MESSAGE_MAP(CFileOpenSave, CFileDialog)
      //{{AFX_MSG_MAP(CFileOpenSave)
      ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
      //}}AFX_MSG_MAP
END_MESSAGE_MAP()


void CFileOpenSave::OnFileOpen()
{
      
    CFileOpenSave dlgOpSv;
    dlgOpSv.DoModal();

    // TODO: Add your command handler code here
    //This is my problem.  I don't know why it's not     //working!
}


My dialog box has a menu with File|Open, but doesn't create the dialog.  I've included the <afxdlgs.h> file in the stdfx.h f header & still nothing.  The only time
it works is if I create an SDI or MDI app.
If you are out there, please Help, Answers2000.
I've looked in my books to trubleshoot this problem &
in the MFC help.  Still having problems. (Remember,
I'm a beginner...)

pagzAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
psdavisConnect With a Mentor Commented:
Ahhh... I see it now...

void CFileOpenSave::OnFileOpen()
{
    CFileOpenSave dlgOpSv;
    dlgOpSv.DoModal();
}

You are trying to create the dialog by a function inside of the dialog.  The CFileOpenSave::OnFileOpen doesn't exist yet until the DoModal is run, but the DoModal is inside itself.

You're going to want to run it from a different class...

void CYourDialogBox::OnFileOpen()
{
    CFileOpenSave dlgOpSv;
    dlgOpSv.DoModal();
}

Phillip
0
 
psdavisCommented:
Give us the unresolved error so we can see it!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.