아이콘 및 커서 추가
리소스에 추가해 준 뒤 윈도우 클래스에 다음 소스를 추가하면 된다.
WndClass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(커서리소스아이디));
WndClass.Icon = LoadIcon(hInstance, MAKEINTRESOURCE(아이콘리소스아이디));
Accelerator
독립된 형태의 리소스.
Alt와 Ctrl키와 동시에 함께 눌러 사용하는 단축키.
1. ID, Key, Modifiers(Ctrl, Alt, Shift), Type 필드로 구성된 Accelerator table 작성.
- Menu item ID와 Accelerator의 ID는 같아야 한다.
2. 리소스에 추가해 준 뒤 윈도우 메세지 루프 부분에 다음 소스를 추가하면 된다.
HACCEL hAccel;
hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));
while(GetMessage(&msg,NULL,0,0))
{
if(!TranslateAccelerator(hWnd,hAccel,&msg)) // 키보드 메세지를 WM_COMMAND 메세지로 변경.
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
int LoadString(HINSTANCE, UINT, LPTSTR, int);
HINSTANCE(1): 프로그램 인스턴스 핸들
UINT(2) : 리소스 ID
LPTSTR(3) : 문자열을 읽을 버퍼
int(4) : 버퍼의 크기
그래픽
GDI 객체 : 그래픽 출력에 사용되는 도구
DC : GDI 객체들을 모아 놓은 것. 선택한 GDI객체로 모양, 속성 변경 가능.
Default GDI 객체
출처 : http://www.winapi.co.kr/win32lec/lec6/lec6-1-1.htm
GDI 오브젝트 핸들 타입 설명 디폴트 펜 HPEN 선을 그을 때 사용된다. 검정색의 가는 선 브러시 HBRUSH 면을 채울 때 사용된다. 흰색 폰트 HFONT 문자 출력에 사용되는 글꼴 시스템 글꼴 비트맵 HBITMAP 비트맵 이미지 선택되지 않음 팔레트 HPALETTE 팔레트 선택되지 않음 영역 HRGN 영역 선택되지 않음
스톡 오브젝트
윈도우가 기본적으로 제공하는 GDI 객체. 언제든 사용가능.
HGDIOBJ GetStockObject(int fnObject);
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 시스템 팔레트
출처 : http://www.winapi.co.kr/win32lec/lec6/lec6-1-2.htm
리턴 : fnObject에 해당하는 GDI객체 핸들
색상
typedef DWORD COLORREF;
0x00BBGGRR // 00자리는 alpha blend
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r) | ((WORD)((BYTE)(g))<<8)) | (((DWORD)(BYTE)(b))<<16)))
GetRValue(rgb) - COLORREF에서 빨간색 값 추출.
GetGValue(rgb) - COLORREF에서 초록색 값 추출.
GetBalue(rgb) - COLORREF에서 파란색 값 추출.
GDI 객체 사용절차
펜
선을 그을 때 사용하는 GDI 객체.
HPEN CreatePen(스타일, 폭, 색깔);
스타일 : PS_SOLID, PS_DASH, PS_NULL
폭 : 두께를 지정. 0이라고 1로 설정. PS_DASH면 두께는 1.
색깔 : 펜의 색깔을 지정.
브러시
채워지는 면을 채색하는 용도로 사용하는 GDI 객체.
HBRUSH CreateSolidBrush(색깔);
단색의 브러시를 생성
색깔 : 브러시의 색깔을 지정.
HBRUSH CreateHatchBrush(스타일, 색깔);
특별한 패턴과 그 패턴의 색깔을 가진 브러시를 생성.
스타일 : HS_BDIAGONAL, HS_CROSS, HS_DIAGCROSS, HS_FDIAGONAL, HS_HORIZONTAL, HS_VERTICAL
색깔 : 브러시의 전경색을 지정.
그리기모드
도형이 그려질 때 원래 그려져 있던 그림과 새로 그려지는 그림과의 관계를 정의
int SetROP2(HDC hDC, int fnDrawMode);
그리기 모드를 설정한다.
리턴 : 성공시 이전 그리기 모드, 실패시 0
int GetROP2(HDC hDC);
현재 그리기 모드 상태를 얻는다.
리턴 : 그리기 모드 값. 다음 표 참고.
그리기 모드 설명 R2_BLACK 항상 검정색이다. R2_WHITE 항상 흰색이다. R2_NOP 아무런 그리기도 하지 않는다. R2_NOT 원래의 그림을 반전시킨다. R2_COPYPEN 원래의 그림을 덮어버리고 새 그림을 그린다. R2_NOTCOPYPEN 새 그림을 반전시켜 그린다. R2_MERGEPEN OR연산으로 두 그림을 합친다. R2_MASKPEN AND연산으로 겹치는 부분만 그린다. R2_XORPEN XOR연산으로 겹치는 부분만 반전시킨다.
'컴퓨터 공부 > Win32 API 프로그래밍' 카테고리의 다른 글
[4월 30일 1교시] 그래픽2 (0) | 2009.04.30 |
---|---|
[스터디] 윈도우즈 API 정복1 - 8장 대화상자. (0) | 2009.04.30 |
[4월 29일 2교시] 입력2 + 리소스1 (0) | 2009.04.29 |
[4월 29일 1교시] 입력1 (0) | 2009.04.29 |
[4월 28일 3교시] 출력(DC) (0) | 2009.04.28 |