日历

载入中...

站内搜索

分类

载入中...

最新文章

载入中...

QQ

登陆

载入中...

回复

载入中...

站点统计

载入中...

友情链接

关于GDI+在 Borland C++ Builder 6 中的使用指南2008-4-3 15:16:00
最近一直在做上位机软件,因为涉及到大量的图片,所以必须要用到 GDI+。然而 GDI+ 和 Borland C++ Builder(简称:BCB)的编译环境兼容性不太好,有许多冲突。我在研究了 GDI+ 的定义文件后,改善了兼容性,让 BCB 使用 GDI+ 不再困难。在此,将这些资料提供给使用 BCB 的朋友们。

这里有一部分内容是在网上摘录的,即GDI+在BCB中的使用规则

---------------------------------------------------------------------------------------------------------------------

GDI+在BCB中使用的方法:

1、建立编译链接环境:GDI+主要是通过gdiplus.dll进行调用,而BCB没有直接提供与
gdiplus.dll对应的静态链接库,所以需要我们自己建立。如果在自己的计算机没有找
到文件gdiplus.dll,可以到微软的官方网站进行下载。然后复制一份到自己的工程目
录中,然后使用BCB提供的工具implib生成对应的静态链接库:

                     implib gdiplus.lib gdiplus.dll
                    
2、将新生成的gdiplus.lib文件COPY到BCB的\lib目录下,然后切记要把gdiplus.lib
添加到工程中(使用"Project->Add to project..."命令)。或者用由文件自动加入
到工程中。

3、修改编译选项:打开BCB菜单"Project->Options"和"Directories/Conditionals"
页,在"Conditionals defines:"中添加“STRICT”编译选项,如果有多项则需要用分
号";"进行分隔。而这个选项也可以通过 #define STRICT 指令直接加到文件中。

4、在.cpp文件中的语句“#pragma hdrstop”后加入以下内容:

  #i nclude <algorithm>
  using std::min;
  using std::max;

5、在.cpp文件中的语句块“#pragma package(smart_init)...”后加入以下内容:
 
  using namespace Gdiplus;

6、最后注意引入GDI+的头文件,注意这个头文件必须放在 VCL.H 和相关的头文件的后
   面,否则会在 BCB6 中产生编译错误:

  #i nclude <Gdiplus.h>

注意:
    本文件应该在BCB5和BCB6中都能正常使用,BCB5没有GDI+的包含文件,所以要手工
添加它们。这些文件可以从BCB6中COPY,也可以从可下载微软的SDK中获取。

---------------------------------------------------------------------------------------------------------------------


    任何引用了Gdiplus.h内容的代码文件都必须遵守上面的规则,否则会产生许多乱七
八糟的编译错误。

    然而,使用这些规则非常麻烦,所以本人做了一个头文件,直接用包含指令“include” ,插到你的C++源文件中就可以使用 GDI+ 了。

    但是编译时还是会产生错误,这个错误不好说是哪家的问题。但是我为此修改了 GDI+ 的定义文件,使 BCB 编译可以顺利通过。这些问题是由于GDI+的定义文件使用了缺省参数的构造函数造成的,所以不要冒险使用缺省值,否则可能会调错了函数。

    目前时间紧张,不能对GDI+的定义文件做出大改动。等有了空闲时间,对GDI+的定义文件重新修改打包,让它完全兼容BCB系统。

    我做的头文件“TGdiplus.hpp”、修改的GDIPLUS定义文件、Gdiplus.lib文件、还有一个演示文件的工程源代码请到此下载。

发表评论:
载入中...