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

2015-11-17 Win32 API 개인업무일지 - 천정호

by 알 수 없는 사용자 2015. 11. 18.
728x90
반응형

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_SOLIDPS_DASHPS_DOTPS_DASHDOTPS_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 함수를 쓰게되면 화면의 전체확대 또는 부분확대가 가능하다.

원본 이미지

전체확대를 하여 이미지가 커진부분

부분확대

728x90