我在编译Rogue wave的Toolkit库时,源程序中有两个函数:
::GetLayout 和 ::SetLayout,报未函数未声明错误,
查MSDN,这两个函数在GDI32库中,在wingdi.h中声明,
可我查wingdi.h文件,没找到这两个函数,请问该如何处理?系统:winxp, vc6.0+sp5

解决方案 »

  1.   

    windows.h包含了,我查了一下,gdi库的其他很多函数都可以用,
    就这两个未声明。
      

  2.   

    Header: Declared in Wingdi.h; include Windows.h.
      Library: Use Gdi32.lib.
      

  3.   

    我查了我系统中的wingdi.h文件,文件中没有上述两个函数的声明,
    在MSDN中可以查到这两个函数在wingdi.h中,相关头文件我都包含了,
    只有这两个函数报错。
    是不是系统版本或头文件版本引起的?
    各位可以在自己的机器上试试。
    谢谢。
      

  4.   

    建了一个win32的工程,测试通过win32的工程
    在stdafx.h中有#include <windows.h>
      

  5.   

    注意Windows版本,#if(WINVER >= 0x0500)
    WINGDIAPI DWORD WINAPI SetLayout(IN HDC, IN DWORD);
    WINGDIAPI DWORD WINAPI GetLayout(IN HDC);
    #endif /* WINVER >= 0x0500 */
      

  6.   

    我机器里的头文件中没有这两个函数的声明,
    我查了一下CDC::GetLayout和CDC::SetLayout的实现,
    是用GetModuleHandle获得GDI32.DLL的Handle,
    然后用GetProcAddress得到这两个函数指针来实现的。
    不知是否需要装新版本的SDK来解决这个问题?
      

  7.   

    应该是不用的你要不
    也像我那样建一个win32的工程,然后试试??很快的,
      

  8.   

    那么你装一下sdk试试吧
    我估计我跟你唯一的区别就是我装sdk了
    记得装好了把路径也要包含的
      

  9.   

    在家里用google桌面搜了一下
    在sdk下的
    AFXWIN.H中找到了声明,你也去找找看
      

  10.   

    找VC7的头文件,库文件 然后覆盖 手动升级SDK
      

  11.   

    装了SDK,设置好路径后,就可以了。
    谢谢!