在VC中的控制台程序貌似不可以调用Win32 API ?是编译器问题还是我的头文件不完整?而且分别包括<windows.h>和<windowsx.h>,显示的错误信息也不一样?我在代码中调用了CreatWaitableTimer,得到的错误信息却是函数未定义~~肿么会这样子?然而同样包含的是windows.h,在VS2005中却可以调用API成功~~~在VS2005中的头文件换成windowsx.h却编译错误.......这是什么原因?谢谢

解决方案 »

  1.   

    VC6的话,可能需要更新平台SDK包
      

  2.   

    可參閱
    http://www.codeproject.com/KB/winsdk/msgcrackwizard.aspx
    http://support.microsoft.com/default.aspx?scid=kb;[LN];Q83456
      

  3.   

    控制台程序可以调用Windows Api函数,这点不用置疑。只是需要下载相应的PlatForm SDK。
      

  4.   

    在VC中的控制台程序貌似不可以调用Win32 API ?
    这一点毋庸置疑
    显示未定义,说明没有包含相应的头文件
      

  5.   

    太粗心了吧
    CreatWaitableTimer少了个e
    CreateWaitableTimer
      

  6.   

    找到问题了~~问题应该是出现在头文件定义CreateWaitableTimer前面的编译指令#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)typedef
    VOID
    (APIENTRY *PTIMERAPCROUTINE)(
        LPVOID lpArgToCompletionRoutine,
        DWORD dwTimerLowValue,
        DWORD dwTimerHighValue
        );WINBASEAPI
    HANDLE
    WINAPI
    CreateWaitableTimerA(
        LPSECURITY_ATTRIBUTES lpTimerAttributes,
        BOOL bManualReset,
        LPCSTR lpTimerName
        );
    WINBASEAPI
    HANDLE
    WINAPI
    CreateWaitableTimerW(
        LPSECURITY_ATTRIBUTES lpTimerAttributes,
        BOOL bManualReset,
        LPCWSTR lpTimerName
        );
    #ifdef UNICODE
    #define CreateWaitableTimer  CreateWaitableTimerW
    #else
    #define CreateWaitableTimer  CreateWaitableTimerA
    #endif // !UNICODE
    在程序最开始处加上一句,#define   _WIN32_WINNT   0x0400 
    程序就可以成功编译了~~