上学期一直就疑问在控制台工程里能否使用CFileDialog类,今天中午试验了一中午,终于有了结果,试验平台为VS2008英文版,其他的比如VS2005应该类似。
Over!
中间那一步直接点击Next就OK;
点击OK后就进入代码编辑窗口,如下所示(下面是部分代码)。
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
//在此处添加相关的CFileDialog代码即可!下面四行是我添加的
CString FileName; CFileDialog dlg(TRUE,"*.jpg","",OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,"JPG Files(*.jpg)|*.jpg|BMP Files(*.bmp)|*.bmp|ALL Files(*.*)|*.*||",NULL); dlg.m_ofn.lpstrTitle="打开比较图像一";
// TODO: code your application's behavior here.
}
return nRetCode;
}
PS:编译时可能会出现如下错误:error C2664: 'CFileDialog::CFileDialog(BOOL,LPCTSTR,LPCTSTR,DWORD,LPCTSTR,CWnd *,DWORD,BOOL)' : cannot convert parameter 2 from 'const char [6]' to 'LPCTSTR';
解决方法:右键点击工程,选择最后一项Properties,然后如图所示
中间那一步直接点击Next就OK;
右键点击工程,选择最后一项Properties,然后如图所示
PS:如果使用OpenCVS函数库,方法一没问题,但是方法二要注意包含的头文件的顺序,要先包含VS的头文件在包含OpenCV的头文件,
正确方法:
#include "afxdlgs.h"
#include <iostream>
using namespace std;
#include <cv.h>
#include <highgui.h>
错误方法:
#include <cv.h>
#include <highgui.h>
#include "afxdlgs.h"
#include <iostream>
using namespace std;
这样的包含顺序在编译时就会报错!