【问题标题】:UWP c++ winrt app shows SHGDNF is unidentified in ShObjldl_core.hUWP c++ winrt 应用程序显示 SHGDNF 在 ShObjldl_core.h 中未识别
【发布时间】:2021-02-27 01:08:43
【问题描述】:

我正在将一个 c# .netcore 应用程序移动到 UWP 桌面桥。我能够部署和构建应用程序,但是在添加 c++ winrt 组件时,我收到一个错误,表明 SHGDNF 在 ShObjldl_core.h 中未识别,下面是 pch.cpp

`#pragma once
#include <stdio.h>

#include <tchar.h>

#include <Unknwn.h>

#include <winrt/base.h>

#include <shlwapi.h>
#include <pathcch.h>

#include <ShlGuid.h>

#include <ShObjIdl_core.h>

#include <ShlObj_core.h>

#include <cfapi.h>

#include <ntstatus.h>

#include <sddl.h>

#include <winrt\windows.storage.provider.h>

#include <winrt\Windows.Security.Cryptography.h>

#include <ppltasks.h>

#include <strsafe.h>`

【问题讨论】:

    标签: desktop-bridge c++-winrt


    【解决方案1】:

    您可以在ShObjIdl_core.h 上按F12 来查看该文档,您会看到有一个#if 声明#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 表示该头文件可用于Desktop Win32 应用程序(但不是商店应用程序)。 C++/Winrt 组件项目不是 Win32 应用程序,因此无法在项目中使用 ShObjIdl_core.h 标头。

    【讨论】:

    • 还有其他头文件可以参考吗?
    • 我们找不到可以替换 ShlObj_core.h 标头的标头。如果在您的场景中无法使用 ShlObj_core.h 标头,您可以从标头中写入所需的 DWORD 来替换它。例如:enum _SHGDNF { SHGDN_NORMAL = 0, SHGDN_INFOLDER = 0x1, SHGDN_FOREDITING = 0x1000, SHGDN_FORADDRESSBAR = 0x4000, SHGDN_FORPARSING = 0x8000 } ; typedef DWORD SHGDNF;
    • 如果你的问题解决了,最好能把答案标记出来,让有同样问题的人快速找到解决办法。
    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多