0

使用函数 GradientFill(); 时出现编译错误;在我的本机 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;%(附加依赖项)

编译错误:

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);
}
4

1 回答 1

5

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

于 2012-06-10T01:54:17.227 回答