`
touchinsert
  • 浏览: 1329305 次
  • 性别: 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++必用头文件)

    在VC++编程环境中,ShellAPI.h是一个非常重要的头文件,它包含了Windows Shell应用程序接口的声明。这些接口允许程序员与Windows操作系统界面进行交互,比如打开、复制、移动文件,管理快捷方式,以及执行各种Shell...

    vc6.0 SHELLAPI.H

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

    C语言头文件 SHELLAPI

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

    shlwapi32位.h和.lib

    首先,"shlwapi32位.h"是Shlwapi.dll的头文件,它定义了所有可用的API函数和数据结构。这个头文件包含了丰富的字符串处理函数,如比较、格式化、搜索、转换等功能,为程序员提供了一套完整的字符串操作工具集。使用...

    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 ...

    常用api常数头文件.rar

    5. **其他头文件**:除了上述常见的头文件,Windows API还包括许多其他头文件,如`winsock2.h`(网络编程)、`shellapi.h`(外壳程序接口)、`commdlg.h`(对话框函数)等,它们各自覆盖了特定领域的API常量和函数。...

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

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

    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++编写的记事本。可计划每天的重要事项及相关工作,提前几天(如提前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 ...

    C++循环创建多级目录

    方法一中,首先需要包含必要的头文件,如iostream、vector、string、windows.h、stdio.h、shlobj.h和shellapi.h。然后,定义了mkDir函数来创建目录,split函数来分割字符串,char_wchart函数来将char类型的字符串...

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

    5. **更换SHELLAPI.h**:在描述中提到,可能需要替换项目中的`SHELLAPI.h`文件,这可能是因为原始版本的头文件不包含某些特定功能,或者存在兼容性问题。替换后的文件应确保支持所需的功能,如气泡提示和右键菜单。 ...

    VC中调用外部程序方式总结.pdf

    - 需要包含`windows.h`和`shellapi.h`头文件。 3. **CreateProcess** - CreateProcess是最复杂的调用方式,提供了更多的控制选项,如进程安全属性、继承信息和优先级。 - 该函数有十个参数,允许指定执行程序...

    系统托盘程序

    而StdAfx.h通常包含了预编译的常用库和宏定义,以提高编译速度。 总的来说,这个压缩包提供了一个系统托盘程序的实例,对于想要学习如何在Windows环境下开发托盘程序的开发者来说,是一份宝贵的资源。通过阅读和...

    HTTP版本在线升级程序

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

    根据文件类型获得相应图标

    这个函数位于shellapi.h头文件中,属于Windows API的一部分,但MFC提供了封装后的接口,使得调用更为简便。以下是一个简单的MFC示例代码,展示了如何获取并显示文件图标: ```cpp #include &lt;afxwin.h&gt; #include ...

    visual c++ vc++生成Windows快捷方式文件.zip

    2. StdAfx.cpp:这是预编译头文件,通常包含常用的头文件和宏定义,以减少编译时间。在VC++项目中,StdAfx.h被预先编译,以便在其他源文件中快速包含。 3. AnalyseShortCut.dsp:这是一个项目文件,是Microsoft ...

    C语言俄罗斯方块

    通过对以上关键知识点的分析可以看出,作者运用了C语言的多种特性来完成游戏的开发,包括但不限于使用宏定义简化代码、利用数组来存储和管理方块的状态以及利用标准库和Windows API来实现游戏界面和逻辑控制。...

    操作系统命令接口设计.doc

    例如,`Shellapi.h`可能包含了与文件和目录操作相关的API。 在编写这样的程序时,需要特别注意错误处理,例如在尝试创建或删除目录或文件时,应该处理可能的失败情况,并向用户显示适当的反馈信息。此外,命令解析...

Global site tag (gtag.js) - Google Analytics