오전 수업 시간
비쥬얼씨 먹통이 오전 마칠 때 쯤에 다시 회복 되었습니다 ㅠ (어제까지만 해도 지워지지도 않았는데,, 2015 다시 깔고 둘다 지웠다 다시 까니까 소생 올래)
잡담 집어 넣고 주쌤 설명 해주신 내용ㄱㄱ
타이틀 바꾸기 따옴표 앞에 대문자 L
hWnd=CreateWindow(lpszClass,L"My First Program",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL,(HMENU)NULL,hInstance,NULL);
따옴표 앞에 왜 L을 붙이느냐 ?
유니코드란게 개발 됬다. 2바이트의 문자 체제 인데 우리가 알고 있는 char는 1바이트 256한계 .
C에서 문자처리 전부 char 처리 하지만 최신버전 일 수록 유니코드로 처리한다.
wchar 와일드캐릭터 숏트형이라고 보면 된다. " "를 컴파일러 하면 아스키 코드 문자열이냐 유니코드 문자열이냐 단정 지을 수 없다.
win32는 대부분 문자들은 wchar에 마춰져있다.
2바이트식 인지해서 우리 입장에선 글짜가 깨져서 보였던거임 C에서 쓰는 함수는 1바이트로 인지 win32에서 쓰는 함수는 2바이트식 인지
L붙이는게 wchar로 바꿔주는 방식이다
L 붙이는거 말고 또다른 방식은
TEXT("First") //이게 젤 권장하는 방식. 아무때나 문제가 안생긴다.
_T("First") // 요건 MFC에서 쓰는 방식
요렇게 있다.
정리하자면
char는 멀티코드 영어처리 할땐 1바이트 한글 처리할땐 2바이트
유니코드는 걍 무조건 2바이트 처리
안드로이드의 강점 모든폰에 돌아가는점. 단점 모든폰에 최적화 하지 하기 힘든점.
지금 하고 있는 내용들보다 나중에 심각한거는 영상처리 처럼 알고리즘이다 덜덜
BOOL TextOut(hdc, nXStart, nYStart, lpszString, cbString)
첫번째 인수는 당연히 DC의 핸들인 hdc이다. 이 함수뿐만 아니라 화면에 무엇인가를 출력하는 모든 함수들의 첫번째 인수는 항상 hdc이다.
무조건 hdc 만들어야 한다.
수업 실습중 캡쳐 내용들
3-2-나. DrawText 예제 글자(안깨지게) 하는 방법 1. (량경누나가 알려주신 방법)
3-2-나. DrawText 예제 글자(안깨지게) 하는 방법 2. (희안님이 알려주신)
4-1-가. WM_CHAR 메시지. 예제
4-1-다. WM_KEYDOWN 예제 소스 (A가 키보드 방향키 대로 움직임. 왼쪽과 위 화면 벋어나지 않고.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | long FAR PASCAL WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static int x = 100; static int y = 100; switch (iMessage) { case WM_KEYDOWN: switch (wParam) { case VK_LEFT: x = x - 8; if (x < 0) { x = 0; } break; case VK_RIGHT: x = x + 8; break; case VK_UP: y = y - 8; if (y < 0) { y = 0; } break; case VK_DOWN: y = y + 8; break; } InvalidateRect(hWnd, NULL, TRUE); return 0; 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)); } | cs |
이날 수업 실습 프로젝트 파일.
#include<windows.h>
#pragma comment(lib, "user32.lib")
int main()
{
int iRet;
iRet = MessageBox(NULL, "123 내용 주와홍",
"345 제목 재민&재홍",
MB_OKCANCEL | MB_ICONHAND);
printf("%d", iRet);
return 0;
}
// MB_ABORTRETRYIGNORE Abort, Retry, Ignore 세 개의 버튼이 나타난다.
// MB_OK OK버튼 하나만 나타난다.
// MB_OKCANCEL OK, Cancel 두 개의 버튼이 나타난다.
// MB_RETRYCANCEL Retry, Cancel 두 개의 버튼이 나타난다.
// MB_YESNO Yes, No 두 개의 버튼이 나타난다.
// MB_YESNOCANCEL Yes, No, Cancel 세 개의 버튼이 나타난다
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151113 WinAPI / 11번 남수진 (5) | 2015.11.13 |
---|---|
2015.11.13 -권오민- WinAPI-2일차 (5) | 2015.11.13 |
20151113-김재홍-win32API_2일차-출력과 입력 (4) | 2015.11.13 |
20151113_임현수_업무일지_WIN32API#2 (3) | 2015.11.13 |
2015.11.13_개인업무일지_[Win32API #2]_이량경 (4) | 2015.11.13 |
20151112 - 강동조 API 개인 업무일지 (2) | 2015.11.13 |
20151113 김태현 WinAPI 1일차 기본문 분석 (3) | 2015.11.13 |
20151112 윤재희 API #1 WinAPI 기본형 코드 (4) | 2015.11.13 |