Accelerator
Accelerator는 쉽게 말하여 단축키와 같다.
먼저 프로그램을 사용하는 사용자가 단축키를 쉽게 알아보기 위해서 메뉴의 이름 옆에 단축키를 적어둔다.
단축키를 적기 위해서는 Caption을 변경해야한다.
Caption은 Property 창을 통하여 변경하면 쉽고 빠르게 변경이 가능하다.
단축키 표시를 모두 했다면 리소스에서 Accelerator를 추가해준다.
Accelerator를 추가한뒤 Accelerator 창을 보면 단축키를 설정할 ID와 보조키의 사용유무 보조키와 함께 사용할 키의 정보 그리고 형식을 지정해주면 단축키의 등록은 끝이난다.
Resource String
Windows에서는 문자열들도 리소스의 일종으로 취급이되며 대량의 문자열을 사용하는 프로그램은 문자열을 정의해 두고 필요할 때마다 리소스에 문자열을 읽어와서 사용한다.
1. String Table 리소스를 추가한다.
2. 추가 후 기본으로 지정된 ID와 값이 생성되면 Caption에 추가할 문자열을 입력하여 저장한다.
3. String Table을 완성 후 헤더파일을 보면 방금 만든 리소스가 추가된다.
4. WinProc 함수에 LoadString을 이용하여 문자열 테이블에 있는 내용을 배열에 담아서 출력한다.
LoadString 함수는 첫 번째 인자로 문자열 리소스를 가진 핸들값으로 WinMain의 첫 번째 인자를 전역변수에 저장하였으므로 전역변수를 사용한다.
두 번째 인자는 문자열의 ID, 세 번째 인자는 문자열을 받을 버퍼, 네 번째 인자는 버퍼의 길이를 넣어주면 된다.
5. String Resource를 이용하여 문자열을 출력한다.
Stock Object
스톡 오브젝트(Stock Object)는 Windows가 기본적으로 제공해 주는 GDI Object 이다. 운영체제가 제공함으로 일부러 만들지 않아도 언제든지 사용할 수 있으며 사용하고 난 후에 파괴시켜 줄 필요도 없다.
Stock Object의 값과 설명
fnObject | 설명 |
BLACK_BRUSH | 검정색 브러시 |
GRAY_BRUSH | 회색 브러시 |
NULL_BRUSH | 투명 브러시 |
WHITE_BRUSH | 흰색 브러시 |
DKGRAY_BRUSH | 짙은 회색 브러시 |
LTGRAY_BRUSH | 옅은 회색 브러시 |
BLACK_PEN | 검정색 펜 |
WHITE_PEN | 흰색 펜 |
NULL_PEN | 투명 펜 |
ANSI_FIXED_FONT | 고정폭 폰트 |
ANSI_VAR_FONT | 가변폭 폰트 |
DEFAULT_PALETTE | 시스템 팔레트 |
1. HBRUSH 타입의 변수를 생성한다.
2. 화면에 그리기 위하여 BeginPaint와 EndPaint를 설정한다.
3. BeginPaint와 EndPaint 사이에 GetStockObject를 사용하여 원하는 색의 그릴도구를 선택하여 MyBrush에 넣어준다.
4. SelectObject를 이용하여 그릴 도구를 선택하고 OldBrush에 이전의 값을 넣어준다.
5. 그림을 그렸으면 다시 이전의 값으로 돌아가야되기 때문에 SelectObject를 사용하여 OldBrush가 가지고있는 예전의 값을로 복귀 후 EndPaint로 종료를한다.
색이 채워진 사각형
Pen
펜은 선을 그을 때 사용되는 GDI 오브젝트이다. 펜을 변경하면 그려지는 선의 모양을 마음대로 변경할 수 있다. 그런데 윈도우즈가 제공하는 스톡 펜은 흰색, 검정색, 투명색 세 가지 뿐이며 파란색, 노란색 등의 원색 펜은 없다. 이런 펜을 사용하고자 할 때는 직접 만들어서 사용해야 한다.
Pen Style
![]() | ![]() | ![]() | ![]() | ![]() |
PS_SOLID | PS_DASH | PS_DOT | PS_DASHDOT | PS_DASHDOTDOT |
Brush
창의 배경을 채우는 것으로 창의 무늬를 조정할 수 있다.
값 | 설명 |
HS_BDIAGONAL | 좌하향 줄무늬 |
HS_CROSS | 바둑판 모양 |
HS_DIACROSS | 좌하향 및 우하향 줄무늬 |
HS_FDIAGONAL | 우하향 줄무늬 |
HS_HORIZONTAL | 수평선 |
HS_VERTICAL | 수직선 |
Ropmode
선을 그릴때 방식은 좌표에서 좌표사이에 선을 그리는 방식이다.
SetROP2 함수를 쓰게되면 움직임이 있을때마다 선을 그리고 다시 이동할때에는 그린 선을 XOR 시켜 지운 후 다시 선을 그리기때문에 사용자가 움직이는 대로 선이 따라 움직이는것 처럼보이게 된다.
SetROP2 함수를 쓴 결과
SetROP2 함수를 주석처리하고 그린 결과
Window BitMap
비트맵은 용량이 크기 때문에 먼저 MyBitmap=LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_BITMAP1)) 통하여 파일을 불러오고
OldBitmap=(HBITMAP)SelectObject(MemDC, MyBitmap);에서 메모리에 비트맵 파일을 올린다.
그 후 BitBlt(hdc, 0,0,123,160,MemDC,0,0,SRCCOPY)에서 메모리에 올려져있는 비트맵 정보를 가지고 그린다.
확대 축소
BitBlt 함수를 쓰지않고 StretchBlt 함수를 쓰게되면 화면의 전체확대 또는 부분확대가 가능하다.
원본 이미지
전체확대를 하여 이미지가 커진부분
부분확대
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151117-주재민-api (4) | 2015.11.18 |
---|---|
김태현 WinAPI 4일차 단축키 만들기 문자열 테이블 GDI오브젝트 (5) | 2015.11.18 |
20151117 수업 / API_4 남수진 (6) | 2015.11.18 |
20151117 윤재희 #4. 그래픽 (5) | 2015.11.18 |
2015.11.17_개인업무일지_[Win32API #4]_이량경 (6) | 2015.11.18 |
20151117_안향진_API_4 (6) | 2015.11.18 |
20151117 임현수 업무일지 WIN32API #4 (6) | 2015.11.18 |
20151117 - 강동조 개인업무일지 API 4일차(작성중) (5) | 2015.11.17 |