クラスのすべてのメンバー関数で使用される CFileDialog オブジェクトが必要です。だから私はクラスのヘッダーを次のように書きました:
#pragma once
#include <string.h>
#include "afxdlgs.h"
#include "gdal_priv.h"
#include "cpl_conv.h"
#include "cpl_string.h"
#include "ogr_spatialref.h"
class FilesWorkFlow
{
public:
FilesWorkFlow(void);
virtual ~FilesWorkFlow(void);
CString GetPath();
GDALDataset* OpenTiff(CString);
private:
wchar_t* lpszFilter;
CFileDialog dlgFile;
};
クラスのコンストラクターを次の形式で実装します。
FilesWorkFlow::FilesWorkFlow(void)
{
lpszFilter = _T("JPEG Files (*.jpg)|*.jpg|")
_T("TIFF Files (*.tif)|*.tif|")_T("PNG Files (*.png)|*.png|")_T("Bitmap Files (*.bmp)|*.bmp|");
dlgFile = CFileDialog(true,0,0,OFN_ENABLESIZING | OFN_HIDEREADONLY,lpszFilter,0,0,true);
}
しかし、コンストラクターでは、エラーが発生します:
no default constructor exists for class CFileDialog
何が問題ですか?
-------------------------------------------------- ----------------------------------------------
問題が解決しました。このようにクラスを実装しました。
FilesWorkFlow.h
class FilesWorkFlow
{
public:
FilesWorkFlow(void);
virtual ~FilesWorkFlow(void);
CString GetPath();
GDALDataset* OpenTiff(CString);
private:
wchar_t* lpszFilter;
CFileDialog* dlgFile;
};
FilesWorkFlow.cpp
FilesWorkFlow::FilesWorkFlow(void)
{
lpszFilter = _T("JPEG Files (*.jpg)|*.jpg|")
_T("TIFF Files (*.tif)|*.tif|")_T("PNG Files (*.png)|*.png|")_T("Bitmap Files (*.bmp)|*.bmp|");
dlgFile = new CFileDialog(true,0,0,OFN_ENABLESIZING | OFN_HIDEREADONLY,lpszFilter,0,0,true);
}
FilesWorkFlow::~FilesWorkFlow(void)
{
}
CString FilesWorkFlow::GetPath()
{
if (dlgFile->DoModal() == IDOK)
{
CString pathname = dlgFile->GetPathName();
return pathname;
}
}