//Block.h
#pragma once
class Block
{
public:
CRect pos;
int num;
public:
Block(void);
~Block(void);
};
//view class
public:
Block currentState[5]; // stores the current state of the blocks
void CpuzzleView::OnDraw(CDC* pDC)
{
CpuzzleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//draw the 4 blocks and put text into them
for(int i=0;i<4;i++)
{
pDC->Rectangle(currentState[i].pos);
// i'm getting an error for this line:
pDC->TextOut(currentState[i].pos.CenterPoint(), currentState[i].num);
}
pDC->TextOut(currentState[i].pos.CenterPoint(), currentState[i].num);
错误表示没有重载函数CDC :: TextOutW()的实例与参数列表匹配。但该功能的原型是:
CDC::TextOutW(int x, int y, const CString &str )
我所做的全部是,我直接给出了CenterPoint()返回的点对象而不是2点......不应该有效吗?
答案 0 :(得分:0)
那是因为你没有正确提供参数列表。请仔细阅读编译器错误消息,这通常有助于解决问题。
TextOut(currentState[i].pos.CenterPoint(), currentState[i].num);
在此次通话中,您传递了CPoint
个对象和int
。这是不正确的,您需要传递int
,int
和CString
(或const char*
和int
长度。
要解决此问题,您应该执行以下操作:
CString strState;
strState.Format("%d", currentState[i].num); // Or use atoi()/wtoi() functions
TextOut(currentState[i].pos.CenterPoint().x, currentState[i].pos.CenterPoint().x, strState);