zoukankan      html  css  js  c++  java
  • API函数的调用(包含一个大小写的问题)

    遇到问题:
        今天做的一个程序要调用AnimateWindow()函数来实现窗口的动画效果,参考书上在类的成员函数中直接调用该函数,没有做任何处理。然而实验时发现编译通不过。

    解决过程:
        查看MSDN后,发现AnimateWindow()函数说明中有以下描述

    Function Information

    Header Declared in winuser.h, include windows.h
    Import library user32.lib
    Minimum operating systems Windows 98, Windows 2000

    可见:
         1.要添加#include"winuser.h"或#include"windows.h"语句;
         2.在弹出菜单中选择:项目-"工程名"+属性-链接器-输入-附加依赖项,将user32.lib添加进去

    但此时编译时还是认不出AnimateWindow()及其参数,在AnimateWindow()上点击右键选"转到声明",发现在winuser.h文件中对AnimateWindow()的声明如下:

    #if(WINVER >= 0x0500)
    WINUSERAPI
    BOOL
    WINAPI
    AnimateWindow(
        IN HWND hWnd,
        IN DWORD dwTime,
        IN DWORD dwFlags);
    #endif /* WINVER >= 0x0500 */

    可见如果WINVER的取值不满足WINVER >= 0x0500的条件的话,AnimateWindow()函数的声明将不被编译,在WINVER上点击右键选"转到定义",发现在stdafx.h文件中对WINVER的定义如下:

    #ifndef WINVER    // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。
    #define WINVER 0x0400  //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。
    #endif

        这样问题就出来了,由于WINVER的值不满足WINVER >= 0x0500的条件,导致AnimateWindow()函数的声明不被编译,将#define WINVER 0x0400语句改成#define WINVER 0x0500,再编译,就发现AnimateWindow()函数已经可以识别了。

        但是AnimateWindow()函数的一个参数宏仍然不能识别,而其它的参数宏却可以,经过检查发现由于参数宏都是大写字母,是自己一时粗心看错了拼写导致的,改成正确的拼写后程序编译通过!

    心得体会:

        1.“转到定义“的解决问题的方法十分重要。
        2.对于宏等全大写字母的标志要注意拼写。
        3.MSDN要仔细的阅读。

  • 相关阅读:
    Servlet文件上传下载
    通过jquery将多选框变单选框
    Java 浮点数精度控制
    JS实现点击table中任意元素选中
    SpringMVC-时间类型转换
    SpringMVC--提交表单
    路径 专题
    防盗链
    Request
    RequestResponse简介
  • 原文地址:https://www.cnblogs.com/toosuo/p/979957.html
Copyright © 2011-2022 走看看