はじめまして。UGと申します。VCをはじめてまだ1週間くらいですので、まだ、コンソールアプリで基本的なことを勉強中です。
ところで、本を購入して勉強しているのですが、それに記載されているコードを打ち込んでみたところエラーになります。
プロジェクトの種類はWin32 ConsoleApplicationで、ConsoleOut.hとUserClass.cppからなっています。
(ConsoleOut.h)
#include<windows.h>
#include<wincon.h>
class CConScr
{
private:
HANDLE m_hCon;
CONSOLE_SCREEN_BUFFER_INFO m_csbInfo;
public:
CConScr(){
m_hCon=GetStdHandle(STD_OUTPUT_HADLE);
}
void Out(SHORT x,SHORT y,LPCTSTR str)
{
COORD coord=(x,y);
DWORD dw;
WriteConsoleOutputCharacter(m_hCon,str,strlen(str),coord,&dw);
}
void GetConsoleScreenRect(Rect *pRc)
{
GetConsoleScreenBufferInfo(m_hCon,&m_csbInfo);
pRc->left=0;
pRc->top=0;
pRc->right=m_csbInfo.dwSize.X-1;
pRc->bottom=m_csbInfo.dwSize.Y-1;
}
};
(UserClass.cpp)
#includeConsoleOut.h
void main()
{
CConScr cs;
RECT rc;
char str[]=サンプル;
cs.GetConsoleScreenRect(&rc);
cs.Out((SHORT)(rc.left+rc.right-strlen(str))/2,(SHORT)(rc.top+rc.bottom)/2,str);
}
これをビルドすると、ConsoleOut.hの void GetConsoleScreenRect(Rect *pRc) という行で「error C2061: 構文エラー : 識別子 'Rect' がシンタックスエラーを起こしました。」となり、UserClass.cppのcs.GetConsoleScreenRect(&rc); という行で
「error C2660: 'GetConsoleScreenRect' : 関数が不正な 1 個の実引数をともなって呼び出されました。」となります。このエラーの原因がわかりません。教えてください。よろしくお願いします。
環境はWindows2000、VC6です。
> void GetConsoleScreenRect(Rect *pRc)
プロトタイプと関数本体の()内の引数の型 Rect を RECT にしましょう。
解決しました。Bunさんありがとうございました。