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

GDI+实践之路(二)#include <gdiplus.h>
GDI+实践之路(二)
using namespace Gdiplus;
GDI+实践之路(二)#pragma comment(lib, 
"gdiplus.lib"
)
GDI+实践之路(二)
GDI+实践之路(二)
class
 CDisplay
;

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

相关文章:

  • 2022-02-28
  • 2021-09-17
  • 2021-12-12
  • 2021-08-04
  • 2021-07-17
  • 2022-12-23
  • 2021-10-02
  • 2021-07-03
猜你喜欢
  • 2021-05-17
  • 2021-09-17
  • 2022-12-23
  • 2022-02-17
  • 2022-02-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案