我试图让这段代码在我的应用程序窗口中画一个圆圈:
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)'” 你们中的任何人可以告诉我我做错了吗?
答案 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:抱歉我的英语不好。