gpt4 book ai didi

c++ - “SHGFP_TYPE_CURRENT”未在此范围内声明

转载 作者:行者123 更新时间:2023-11-27 23:06:24 29 4
gpt4 key购买 nike

我正在将一个巨大的项目从 Qt 4.x 迁移到 5,(事实上我已经在这里多次寻求帮助,我非常感谢你的帮助)。我收到下一个错误:

..\marssies\userlayerswidget.cpp: In member function 'void LayersModel::importFromOld()': ..\marssies\userlayerswidget.cpp:1736:60: error: 'SHGFP_TYPE_CURRENT' was not declared in this scope

这没什么意义,因为我包含了正确的 header ,这里是所有包含的内容:

#include "userlayerswidget.h"
#include "appcommon.h"
#include "messagebox.h"
#include "polyline.h"
#include "painterbar.h"
#include "rectangle.h"
#include "polygon.h"
#include "label.h"
#include "line.h"
#include "point.h"
#include "encsymbol.h"
#include "touchswibz.h"
#include "mapmodulelist.h"
#include "offlinelayersaver.h"
#include "circle.h"

#include <QMenu>
#include <QDir>
#include <QDesktopServices>
#include <QtDebug>

#ifdef _WIN32
#include <Shlobj.h>
#endif

下面是一段使用 SHGFP_TYPE_CURRENT 的代码:

void LayersModel::importFromOld() {
TCHAR appPath[MAX_PATH];
if (!(SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appPath))) {
//code
}

我已经研究过,根据 http://msdn.microsoft.com/en-us/library/bb762181%28VS.85%29.aspx 一切都是正确的
我试图找到其他有同样问题的人,但要么上下文不同,要么问题没有得到回答。
谢谢。

最佳答案

ShlObj.h 中,SHFGP_TYPE_CURRENT 定义如下:

#if (_WIN32_IE >= 0x0500)

typedef enum {
SHGFP_TYPE_CURRENT = 0,
SHGFP_TYPE_DEFAULT = 1,
} SHGFP_TYPE;

#endif

所以可以这样做:

#define _WIN32_IE 0x0500
#include <ShlObj.h>

或者另一种方法是直接使用值01作为SHGetFolderPath的参数。

关于c++ - “SHGFP_TYPE_CURRENT”未在此范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286545/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com