我正在使用全新的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.
}

最佳答案

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

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

10-08 09:47