posts - 256, comments - 1319, trackbacks - 41, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

GDI+实践之路(二)

Posted on 2004-10-25 22:42 FantasySoft 阅读(1638) 评论(0)  编辑 收藏 所属分类: All About SoftOnly Windows

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

#include <gdiplus.h>
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+的头文件中所需的一些宏定义,如果缺少了这些宏定义就会导致编译出现错误了。 
                


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-09-21 14:52 编辑过
 
另存  打印