标题: GDI+实践之路(二)
- FantasySoft 2004-10-25 22:42 阅读:1675
- 评论:0 | 添加评论

        在上一篇post中,我们已经通过建立一个简单的程序对GDI+有了一些初步的了解。接下来,为了能够提高开发效率,我打算将GDI+的API进行封装,提高代码的重用性。结果,我遇到了一个极其讨厌的问题。
通常,我们都需要将class的定义写在.h头文件中,那么很明显就要将gdiplus.h包含在头文件中了,但是,不知道为什么,我认为OK的代码却编译不过,例如:

[图片]#include 
[图片]using namespace Gdiplus;
[图片]#pragma comment(lib, "gdiplus.lib")
[图片]
[图片]class CDisplay
[图片][图片][图片]{
[图片]protected:
[图片]    GdiplusStartupInput gdiplusStartupInput;
[图片]    ULONG_PTR           gdiplusToken;
[图片]
[图片]public:
[图片]    int Init();
[图片]    int Release();
[图片]};

                                                                        (CDisplay.h)

在CDisplay.cpp中实现头文件中定义的两个方法,编译出现了如下错误:
error C2146: syntax error : missing ';' before identifier 'GraphicsState' 以及fatal error C1004: unexpected end of file found。而且编译结果显示错误出现在GDI+本身的头文件中。我想,这个错误一定不会是由于GDI+本身造成的,事实上将这个类应用到标准的MFC工程中,却没有问题。在网上找了很久一直不得其解,最后还是我的老大告诉了我其中的玄机:只需要在头文件中包含afxdtctl.h就可以将问题解决了。该afxdtctl.h文件中包含了GDI+的头文件中所需的一些宏定义,如果缺少了这些宏定义就会导致编译出现错误了。                 


添加评论
返回顶部 | 返回首页