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

时间:2012-06-10 01:45:02

标签: c++ visual-studio-2010 winapi compiler-errors

当我使用函数GradientFill()时出现编译错误;在我的Native WinAPI 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:term不评估为带有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);
}

1 个答案:

答案 0 :(得分:5)

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