除非我设置了LineTo(hdc,50,50),否则它将从point(50,50)绘制,但是无论我做什么,我都无法使用MAKEPOINTS使其工作并将其存储在Vertex类中(上课是正确的
请帮助
case WM_LBUTTONDOWN:
{
HDC hdc = GetDC(hWnd);
POINTS clickPoint = MAKEPOINTS(lParam);
connectLines.push_back(Vertex(clickPoint.x,clickPoint.y));
MoveToEx(hdc,clickPoint.x,clickPoint.y,NULL);
LineTo(hdc,LOWORD(lParam),HIWORD(lParam));
ReleaseDC(hWnd,hdc);
}
break;
编辑:我正在添加WM_PAINT以及Vertex类和Vertex头
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,&ps);
// TODO: Add any drawing code that uses hdc here...
for (Vertex points : connectLines) {
HPEN pen = CreatePen(PS_SOLID,7,RGB(255,0));
HGDIOBJ oldPen = SelectObject(hdc,pen);
SelectObject(hdc,oldPen);
DeleteObject(pen);
}
EndPaint(hWnd,&ps);
}
break;
顶点标题
#pragma once
class Vertex
{
public:
Vertex();
Vertex(int x,int y);
Vertex(const Vertex& other);
// accessors
int GetX() const;
void SetX(const int x);
int GetY() const;
void SetY(const int y);
// Assigment operator
Vertex& operator= (const Vertex& rhs);
bool operator== (const Vertex& rhs) const;
const Vertex operator+ (const Vertex& rhs) const;
private:
int _x;
int _y;
};
顶点标题
#include "Vertex.h"
Vertex::Vertex()
{
_x = 0.0f;
_y = 0.0f;
}
Vertex::Vertex(int x,int y)
{
_x = x;
_y = y;
}
Vertex::Vertex(const Vertex& other)
{
_x = other.GetX();
_y = other.GetY();
}
int Vertex::GetX() const
{
return _x;
}
void Vertex::SetX(const int x)
{
_x = x;
}
int Vertex::GetY() const
{
return _y;
}
void Vertex::SetY(const int y)
{
_y = y;
}
Vertex& Vertex::operator=(const Vertex& rhs)
{
// Only do the assignment if we are not assigning
// to ourselves
if (this != &rhs)
{
_x = rhs.GetX();
_x = rhs.GetY();
}
return *this;
}
// The const at the end of the declaration for '==' indicates that this operation does not change
// any of the member variables in this class
bool Vertex::operator==(const Vertex& rhs) const
{
return (_x == rhs.GetX() && _y == rhs.GetY());
}
// You can see three different uses of 'const' here:
//
// The first const indicates that the method changes the return value,but it is not moved in memory
// The second const indicates that the parameter is passed by reference,but it is not modified
// The third const indicates that the operator does not change any of the memory variables in the class
const Vertex Vertex::operator+(const Vertex& rhs) const
{
return Vertex(_x + rhs.GetX(),_y + rhs.GetY());
}
由于某种我不知道的原因,它不希望使用“ x”和“ y”,但是我只在使用此程序进行计算时才遇到这个问题。
谢谢您的帮助