包含Commdlg.h后,OPEN FILENAME是否未定义?

时间:2016-02-05 13:10:44

标签: c++ visual-studio-2015

我正在使用全新的VS2015安装。我正在为另一个平台的某些C ++代码创建一个Windows包装器。我正在研究使用GetOpenFile打开文件选择器对话框的相对典型的任务。这需要使用OPENFILENAME结构。我试图关注MSDN示例here

出于某种原因OPENFILENAME显示:

  

错误:标识符“OPENFILENAME”未定义。

如下所示,我收录了<Windows.h><Commdlg.h>。我在这里错过了什么非常简单的事情?我觉得这是一个命名空间问题,但我似乎无法弄清楚正确的命名空间是什么。

#include "pch.h"
#include "MainPage.xaml.h"
#include <Windows.h>
#include <Commdlg.h>

using namespace App1;

using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::Foundation::Collections;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Controls;
using namespace Windows::UI::Xaml::Controls::Primitives;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Media;
using namespace Windows::UI::Xaml::Navigation;

MainPage::MainPage()
{
    InitializeComponent();
}


void App1::MainPage::button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    OPENFILENAME ofn;   // <-- Syntax/IDE checker highlights as undefined.
}

1 个答案:

答案 0 :(得分:0)

汉斯在评论中指出,我无意中将其创建为Windows Store项目,这使得传统的桌面API无法访问。

正确的方法是使用Store API函数,或者对于更传统的应用程序,创建一个正确类型的新项目。