스페이스바를 누르면 출력되는 문자가 #이고 그렇지 않으면 A로 출력되면서
방향키로 출력되는 문자가 이동하는 API 소스를 교재의 예제를 약간 변형해서 만들었는데요
근데 컴파일조차도 안되네요.ㅡ.ㅜ;
c:\lecture\winapi\win32_vs\win32_vs\win32.cpp(131): error C2664: 'TextOutW' : 매개 변수 4을(를) 'TCHAR'에서 'LPCWSTR'(으)로 변환할 수 없습니다.
1> 정수 계열 형식에서 포인터 형식으로 변환하려면 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요합니다.
라는 오류 메세지가 나오는데요
TextOut(hdc,x,y,a,1);
에서 TCHAR a;로 선언했는데 예전에 질문했던 아래의 링크처럼 static TCHAR str[2];으로 배열을 TCHAR형으로 선언해서
TextOut(hdc,100,100,str,lstrlen(str));으로 TCHAR형의 배열을 TextOut로 출력했었는데
왜 이번에는 TCHAR형을 변환할수 없다고 나오는지 통 모르겠네요.
그리고 제가 변경한 소스에서 어느부분인가 분명히 심각하게 잘못된 거 같은데 제 허접한 실력으로는 도저히 모르겠네요.
아시는 분 답변 주시면 고맙겠네요.
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("Key");
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
while (GetMessage(&Message,NULL,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
static int x;
static int y;
TCHAR a;
switch (iMessage) {
case WM_CHAR:
if((TCHAR)wParam==' ')
a='#';
else
a='A';
break;
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT:
x-=8;
break;
case VK_RIGHT:
x+=8;
break;
case VK_UP:
y-=8;
break;
case VK_DOWN:
y+=8;
break;
}
InvalidateRect(hWnd,NULL,TRUE);
break;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,x,y,a,1);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}