게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
api 기본문제 질문
게시물ID : programmer_10156짧은주소 복사하기
작성자 : ㅜ_ㅠ
추천 : 0
조회수 : 318회
댓글수 : 3개
등록시간 : 2015/05/17 14:38:37
윈도우즈 api정복 책을 보다가 4장 입력 예제 KEY에 아래와 같은 예문이 있어서 한번 

if ((TCHAR)wParam == ' ') {
str[0]=0;
부분을 


if ((TCHAR)wParam == 32||13 {
str[0]=0;
으로 바꾸었습니다만 제가 원하는 결과가 안나오네요.(엔터와 스페이스 입력시 입력문자 지워짐.)
참고로 if ((TCHAR)wParam == 32 {
str[0]=0;
로 스페이스의 아스키코드값만 쓰면 결과가 ' '만 사용한 것과 동일합니다.
왜 논리 or연산자를 사용했는데 원하는 결과가 안나오나요?
그리고 엔터와 스페이스바 입력시 입력문자 전체가 지워지게 하려면 어떻게 코드를 바꿔야 좋을까요?


#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 TCHAR str[256];
int len;

switch (iMessage) {
case WM_CHAR:
//*
// len=lstrlen(str);
// str[len]=(TCHAR)wParam;
// str[len+1]=0;
// InvalidateRect(hWnd,NULL,FALSE);
//*/

if ((TCHAR)wParam == ' ') {
str[0]=0;
} else {
len=lstrlen(str);
str[len]=(TCHAR)wParam;
str[len+1]=0;
}
InvalidateRect(hWnd,NULL,TRUE);

return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,100,100,str,lstrlen(str));
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호