当我使用GradientFill()函数时无法编译代码

Cant compile code when I use GradientFill() function

本文关键字:编译 代码 函数 GradientFill      更新时间:2023-10-16

当我在我的本机WinAPI应用程序中使用函数GradientFill()时出现编译错误C++

我做错了什么?如何编译我的代码?我正在使用Microsoft Visual C++ 2010 Express

在我的项目中,我已经链接了正确的库 msimg32.lib 文件。有关我所有链接的文件(项目属性->链接器->输入->其他依赖项),请参见下文:

comctl32.lib;kernel32.lib;gdi32.lib;

winspool.lib;msimg32.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

编译错误:

1>c:\users\app.cpp(129):错误 C2064:术语的计算结果不等于采用 6 个参数的函数

导致编译错误的代码:

void TransparentCheckbox::verticalGradient(HDC hDC, const RECT& GradientFill, COLORREF rgbTop, COLORREF rgbBottom)
{
    GRADIENT_RECT gradientRect = { 0, 1 };
    TRIVERTEX triVertext[ 2 ] = {
        GradientFill.left - 1,
        GradientFill.top - 1,
        GetRValue(rgbTop) << 8,
        GetGValue(rgbTop) << 8,
        GetBValue(rgbTop) << 8,
        0x0000,                 
        GradientFill.right,
        GradientFill.bottom,
        GetRValue(rgbBottom) << 8,
        GetGValue(rgbBottom) << 8,
        GetBValue(rgbBottom) << 8,
        0x0000
    };
    // Below is line 129
    GradientFill(hDC, triVertext, 2, &gradientRect, 1, GRADIENT_FILL_RECT_V);
}

您已声明一个参数;GradientFill 作为 const RECT&,然后调用 Windows GradientFill 过程 - 这会导致冲突。 我会更改参数的名称,或者您可以将过程调用的范围限定为 ::GradientFill