在包含 Commdlg.h 后打开未定义的文件名

OPEN FILENAME undefined after including Commdlg.h?

本文关键字:未定义 文件名 包含 Commdlg      更新时间:2023-10-16

>我正在使用全新的VS2015全新安装。 我正在努力为来自另一个平台的一些C++代码创建一个 Windows 包装器。 我正在处理使用 GetOpenFile 打开文件选择器对话框的相对典型的任务。 这需要使用OPENFILENAME结构。 我试图在这里遵循 MSDN 示例。

由于某种原因,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.
}

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

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