我知道这是一个非常简单的问题,但我很习惯使用Borland和包装器,所以这对我来说是一种新方法。有人可以简单地告诉我如何打开一个只从Visual Studio c ++控制台应用程序获取.obj文件的OpenDialog?
非常感谢!
答案 0 :(得分:5)
控制台应用程序和GUI应用程序之间没有任何区别,除了入口点(“GUI”应用程序中的WinMain),并且控制台应用程序将在启动期间打开控制台窗口,如果不是从控制台。
所有Win32 API都可用,因此您需要使用GetOpenFileName调用,如下所示:
OPENFILENAME ofn;
char *FilterSpec ="Object Files(*.obj)\0*.obj\0Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0";
char *Title ="Open....";
char szFileName[MAX_PATH];
char szFileTitle[MAX_PATH];
int Result;
*szFileName = 0;
*szFileTitle = 0;
/* fill in non-variant fields of OPENFILENAME struct. */
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = GetFocus();
ofn.lpstrFilter = FilterSpec;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.nFilterIndex = 0;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrInitialDir = "."; // Initial directory.
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrTitle = Title;
ofn.lpstrDefExt = default_extension;
ofn.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY;
if (!GetOpenFileName ((LPOPENFILENAME)&ofn))
{
return (-1); // Failed or cancelled
}
else
{
this->filename.Set(szFileName);
}
答案 1 :(得分:2)
是的,可以从VC ++控制台应用程序打开OpenDialog。
步骤: 创建一个新项目。 - >选择Win32控制台应用程序。 在下一个对话框中,选择“支持MFC的应用程序”。 您将获得以下代码:
#include“stdafx.h”
#include“test.h”
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE [] = __FILE__;
#ENDIF
/////////////////////////////////////////////// ////////////////////////////// //唯一的应用程序对象
CWinApp theApp;
使用namespace std;
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
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
cout << (LPCTSTR)strHello << endl;
}
return nRetCode;
}
在“else”部分
的开头添加以下代码CFileDialog dlgOpen(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,“文本文件( .txt)| .txt ||”); dlgOpen.DoModal();
运行该应用程序。将自动打开一个打开的对话框。谷歌“CFileDialog”提供进一步的帮助。
答案 2 :(得分:0)
在Visual Studio中,通常依赖MFC's CFileDialog class。查看链接的MSDN文档页面以获取样本用法。此页面也有some examples。
如果您使用的是Windows Vista或Windows 7,则可以尝试新的COM接口IFileOpenDialog。 Kenny Kerr使用新的Vista对话框nice article。