`
touchinsert
  • 浏览: 1291867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于shellapi.h/shlobj.h头文件和宏定义冲突

阅读更多
昨天在给LLYF ProcessHelper添加TrayIcon功能,代码是从LLYF Spy那部分完全Paste过来的,结果编译的时候说NIF_INFO没有定义,还有szInfo、uTimeout这些凡是说要IE Version5.0以上支持部分都说没有定义,可是我在LLYF Spy里好好的呀,还以为是XP的问题,马上退到2000下,结果一样。于是我打开ShellApi.h看,在那个函数和结果定义前加上#define _WIN32_IE 0x0600,编译是勉强通过了,但是功能没有实现,并没有Balloon ToolTip出现。后来在看Project Options,发现有个NO_WIN32_LEAN_AND_MEAN定义,是因为有一个函数里调用了SHBrowseForFolder,要加shlobj.h这个头文件,于是意识到可能和这个有关。搜索了一下,我的程序里并没有调用到这个函数(我晕),于是把这个函数体全部注释掉,把这个头文件和宏也删了,编译和运行都正常了。
但这样还是不满意撒,不能同时用Balloon Tooltip和SHBrowseForFolder了,后来上google搜了一下,发现有一个解决办法,头文件和宏定义的顺序换下就行了:
#define NO_WIN32_LEAN_AND_MEAN
#include <ShlObj.h>
#include <VCL.h>
严格按照这个顺序,后面再include其它的ShellApi.h之类的都可以了。
分享到:
评论

相关推荐

    vc6.0 中的ShellAPI.h文件下载(VC++必用头文件)

    vc6.0 中的ShellAPI.h文件(VC++必用头文件) shellapi.h error C2065: “HDROP”: 未声明的标识符,编译出无数错误,都是这个头文件的错误

    vc6.0 SHELLAPI.H

    SHELLAPI.H是最新的版本直接替换以前的那个就可以产生系统托盘小冒泡提示啦

    C语言头文件 SHELLAPI

    C语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 SHELLAPIC语言头文件 ...

    MinGW最新版5.0.X

    │ shellapi.h │ shldisp.h │ shlguid.h │ shlobj.h │ shlwapi.h │ shobjidl.h │ signal.h │ snmp.h │ specstrings.h │ sql.h │ sqlext.h │ sqltypes.h │ sqlucode.h │ sspi.h │ stdint.h │ stdio.h ...

    mfc 对话框托盘、气泡、读写注册表、控制鼠标键盘、定时器

    关于shellapi.h的定义可以参考其他文章,或者注释ShowBalloonTip(气泡)功能 并在stdaf.h的最前面增加 #ifndef _WIN32_IE // 允许使用 IE 4.0 或更高版本的特定功能。 #define _WIN32_IE 0x0500 // 为 IE 5.0 及...

    c++编写的记事本,附源码

    一个用c++编写的记事本。可计划每天的重要事项及相关工作,提前几天(如提前3天,可自由设置)每天自动提醒,...若报编译错误,可能是SHELLAPI.h较旧,则需把此程序提供的SHELLAPI.h拷贝到c++安装目录的Include\下替换

    一款用C++编写的任务提醒程序

    一款用C++编写的任务提醒程序,实现重要事项提醒,防止遗忘,影响工作和生活。...若报编译错误,可能是SHELLAPI.H太旧,则需把此程序提供的SHELLAPI.H拷贝到c++安装文件夹下的Include文件夹下进行替换

    soil测试程序,可以正常运行

    #include &lt;shellapi.h&gt; #include &lt;gl/gl.h&gt; #include &lt;gl/glext.h&gt; #include "SOIL.h" LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM); void EnableOpenGL(HWND hwnd, HDC*, HGLRC*); void ...

    stdafx.h代码

    #include &lt;shellapi.h&gt; #endif #ifndef __AFXRES_H__ #include &lt;afxres.h&gt; // standard resource IDs #endif #ifndef __AFXCOLL_H__ #include &lt;afxcoll.h&gt; // standard collections #endif #ifdef _AFX_...

    C++实现托盘、冒泡、图标闪烁等功能的源代码

    C++实现托盘、冒泡、图标闪烁等功能的源代码,源码可直接使用。若报编译错误,可能是SHELLAPI.h较旧,则需把此程序提供的SHELLAPI.h拷贝到c++安装目录的Include\下替换

    HTTP版本在线升级程序

    ShellAPI.ShellExecute(0, 'Open', 'UPDATE.EXE', PWideChar(Params), '',SW_SHOWNORMAL); 其中Params参数,字符串内容必须按顺序分别为: 更新列表XML文件的URL地址 + 主控程序文件名 + 个性程序标题, 共传入三个...

    MFC下最小化到托盘后的气泡提示

    个人在网上收集的,做了好久才做好的!个人运行成功.里面包含了SHELLAPI.H.不用这个再去修改!

    一个不错的地形编辑器源码.zip

    #include &lt;shellapi.h&gt; #pragma warning(default : 4201 4214 4115) #include &lt;assert.h&gt; #include &lt;io.h&gt; #include &lt;fstream.h&gt; #include "filepath.h" #include "consoletab.h" // for ConPrintf (yes, it's ...

    VC++6.0编写的系统托盘程序

    VC++6.0编写的系统托盘程序,包含封装了 Shell_NotifyIcon()函数的类。必须包含 sje;;shellapi.h和链接shell32.lib

    tray:带有弹出菜单的系统托盘图标的跨平台超小C99实现

    适用于: Linux / Gtk(libappindicator) Windows XP或更高版本(shellapi.h) MacOS(可可/ AppKit) 还有一个存根实现,它会在尝试创建任务栏菜单时返回错误。设置在编译tray之前,您需要在包含tray.h的行之前...

    VC6.0下实现系统托盘的气泡提示窗口以及菜单提示

    这是在前人的基础上写的VC6.0环境下的气泡提示和右键菜单,在运行之前需要更换SHELLAPI.h文件,文件夹下有。

    VC++中使用气泡提示

    任务栏提示,使用气泡提示。气泡中带图标,可以设置提示时长. 首先需要更新一下VC6.0的SDK,方法如下: 把ShellAPI.h文件中的关于任务栏提示的函数和常量替换为下面的内容,查看说明

    Windows ShellAPI的调用

    一个未公开的Windows ShellAPI的调用

    xp下实现托盘图标以及冒泡提示

    xp下要实现托盘图标需要更新SDK,但为了这个似乎有点小题大做了,网上有解决办法,说是要改_WIN32_IE的值,但仅这些不够,我们还要将新版的shellapi.h覆盖旧版的就可以了,没有必要所有文件都更新的。新旧版比对只...

    delphi通用函数单元

    function GetHdID : String; //获取Ide硬盘序列号 ...//use Shellapi, ActiveX, ComObj, Shlobj function AddTail(Src: String): String; procedure ChangeWallPaper (BmpFile: String); //更改墙纸

Global site tag (gtag.js) - Google Analytics