본문 바로가기
코스웨어/15년 스마트컨트롤러

20151113 - 주재민 API 개인 업무일지 2일차

by 알 수 없는 사용자 2015. 11. 15.
728x90
반응형
 유니코드

각 나라별 언어를 모두 표현하기 위해 나온 코드 체계가 유니코드(unicode)다.

유니코드는 사용중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드다.

 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자를 표현할 수 있다.

 아스키 코드

 

아스키는 128개의 가능한 문자조합을 제공하는 7비트(bit) 부호로, 처음 32개의 부호는 인쇄와 전송 제어용으로 사용된다. 보통 기억장치는 8비트(1바이트, 256조합)이고, 아스키는 단지 128개의 문자만 사용하기 때문에 나머지 비트는 패러티 비트나 특정문자로 사용된다.

 

 한문으로 글자가 나오는 것을 세가지 방법으로 고침. 2번째 방법을 권장.

1. L""

2. TEXT("")

3. _T("")

 

ex) LPWSTR  lpszClass = TEXT("First")

 

2-3.다양한 변경

 가. 배경색 바꾸기

WndClass.hbrBackground=GetStockObject(WHITE_BRUSH);//흰색으로 바꿈

WndClass.hbrBackground=GetStockObject(BLACK_BRUSH);//검은색으로 바꿈

 

 나. 커서 바꾸기

WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

 

 

 다. 윈도우의 타이틀 바꾸기

hWnd=CreateWindow(lpszClass,"My First Program",WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
  NULL,(HMENU)NULL,hInstance,NULL);

 

 라. 윈도우의 크기 바꾸기

hWnd=CreateWindow(lpszClass,"My First Program",WS_OVERLAPPEDWINDOW,
   100,100,300,200,
  NULL,(HMENU)NULL,hInstance,NULL);

(100,100)의 위치에 윈도우가 나타나며 폭은 300, 높이는 200이 될 것이다.

 

 

 마. 윈도우 스타일

 

 

 

DC(Device Context)란?

 출력에 필요한 모든 정보를 가지는 데이터 구조체이며 GDI 모듈에 의해 관리된다. 어떤 폰트를 사용할 것인가, 선의 색상과 굵기, 채움 무늬와 색상, 출력 방법 등등이 모두 출력에 필요한 정보들이다.

 

 문자열 출력

굵은 문자로 표시한 부분이 수정된 부분이다

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPSTR lpszClass="TextOut";

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)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);

hWnd=CreateWindow(lpszClass,"My First Program",WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
  NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);

while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
switch(iMessage) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_LBUTTONDOWN:
hdc=GetDC(hWnd);
TextOut(hdc,100,100,"Beautiful Korea",15);
ReleaseDC(hWnd, hdc);
return 0;

}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

 

 

 

 

 

 

728x90