处理功能不起作用

时间:2016-04-20 11:19:45

标签: c++ winapi

我试图让这段代码在我的应用程序窗口中画一个圆圈:

    Draw Circle;
    Circle.DrawCircle(hwnd, i*200+5, j*200+5, i*200+194, j*200+194, 7, (255, 0, 0));

我使用的类,名为Draw.cpp,看起来像这样

    #include "Draw.h"
    #if defined(UNICODE) && !defined(_UNICODE)
    #define _UNICODE
    #elif defined(_UNICODE) && !defined(UNICODE)
    #define UNICODE
    #endif

    #include <tchar.h>
    #include <windows.h>
    #include <vector>

    using namespace std;


    Draw::Draw()
    {
    }

    void DrawCircle(HWND vhwind, int xPosTopLeft, int yPosTopLeft, int xPosBotRight, int yPosBotRight, int width, vector <int> rgb)
    {
         HDC hdc;                          
         PAINTSTRUCT ps;                   
         hdc = BeginPaint(vhwind, &ps);
         HPEN hPenOld;
         HPEN hLinePen = CreatePen(PS_DASH, width, RGB (rgb[0], rgb[2], rgb[2]));
         hPenOld = (HPEN)SelectObject(hdc, hLinePen);
         Arc(hdc, xPosTopLeft, yPosTopLeft, xPosBotRight, xPosBotRight, NULL, NULL, NULL, NULL);
         SelectObject(hdc, hPenOld);
         DeleteObject(hLinePen);
    }

头文件,名为Draw.h,如下所示:

    #ifndef DRAW_H
    #define DRAW_H
    #include "Draw.h"
    #if defined(UNICODE) && !defined(_UNICODE)
    #define _UNICODE
    #elif defined(_UNICODE) && !defined(UNICODE)
    #define UNICODE
    #endif

    #include <tchar.h>
    #include <windows.h>
    #include <vector>

    using namespace std;


    class Draw
    {
        public:
            Draw();
            void DrawCircle(HWND vhwind, int xPosTopLeft, int yPosTopLeft, int xPosBotRight, int yPosBotRight, int width, vector <int> rgb);
        protected:
        private:
    };

    #endif // DRAW_H

这个问题与我认为的“HWND vhwind”有关。 错误消息显示:“错误:没有匹配函数调用'Draw :: DrawCircle(HWND __ *&amp;,int,int,int,int,int,int)'” 你们中的任何人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:1)

尝试

Draw Circle;
Circle.DrawCircle(hwnd, i*200+5, j*200+5, i*200+194, j*200+194, 7, {255, 0, 0});

最后一个参数,写为(255, 0, 0),被解释为单int

---编辑---

抱歉:如果你正在使用C ++ 11或C ++ 14,我的解决方案很好。

如果你正在使用C ++ 98,你应该准备一个std::vector<int>;

之类的东西
Draw Circle;
std::vector<int> rgb;

rgb.reserve(3);
rgb.push_back(255);
rgb.push_back(0);
rgb.push_back(0);

Circle.DrawCircle(hwnd, i*200+5, j*200+5, i*200+194, j*200+194, 7, rgb);

p.s:抱歉我的英语不好。