==========================================================================================
==========================================================================================
<API>
=5-4 액셀러레이터
수정전 | 수정후 |
Menu1 | Menu&1\tCtrl+A |
Menu2 | Menu&2\tCtrl+B |
Exit | &Exit\tCtrl+C |
HACCEL hAccel; |
1.
Alt+F => 메뉴
1,2,E 입력 => 메뉴1, 메뉴2, Exit 실행 됨
2.
Ctrl+A
Ctrl+B
Ctrl+E ==> 바로 실행 됨
=5-5 문자열 테이블
case WM_PAINT: |
=6-1-가. GDI오브젝트
GDI 오브젝트 | 핸들 타입 | 설명 | 디폴트 |
펜 | HPEN | 선을 그을 때 사용된다. | 검정색의 가는 선 |
브러시 | HBRUSH | 면을 채울 때 사용된다. | 흰색 |
폰트 | HFONT | 문자 출력에 사용되는 글꼴 | 시스템 글꼴 |
비트맵 | HBITMAP | 비트맵 이미지 | 선택되지 않음 |
팔레트 | HPALETTE | 팔레트 | 선택되지 않음 |
영역 | HRGN | 영역 | 선택되지 않음 |
=6-1-나. 스톡 오브젝트
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 | 시스템 팔레트 |
OldBrush = (HBRUSH)SelectObject(hdc,MyBrush); |
첫번째 인수로 DC의 핸들을 주고 두번째 인수로 GDI 오브젝트의 핸들을 주면 DC에 해당 오브젝트를 선택해 준다. 이후부터 GDI는 그래픽을 출력할 때 선택된 오브젝트를 사용하게 된다. SelectObject가 리턴하는 값은 새로 선택되는 오브젝트 이전에 선택되어 있던 같은 종류의 오브젝트 핸들이다
HDC hdc; |
=C => Win32API + C++ ==> MFC APP
+MFC구조 구조
=6-1-다. 색상
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r) | ((WORD)((BYTE)(g))<<8)) | (((DWORD)(BYTE)(b))<<16))) |
#define GetRValue(rgb) ((BYTE)(rgb)) |
=6-1-라. 펜
MyPen = CreatePen(PS_SOLID, 5, RGB(0, 0, 255)); |
HPEN MyPen; |
=6-1-마. 브러시
값 | 설명 |
HS_BDIAGONAL | 좌하향 줄무늬 |
HS_CROSS | 바둑판 모양 |
HS_DIACROSS | 좌하향 및 우하향 줄무늬 |
HS_FDIAGONAL | 우하향 줄무늬 |
HS_HORIZONTAL | 수평선 |
HS_VERTICAL | 수직선 |
HBRUSH CreateSolidBrush( COLORREF crColor ); HBRUSH CreateHatchBrush( int fnStyle, COLORREF clrref ); |
=6-2-가. 흑백에서의 그리기 모드
=6-2-나. 그리기 모드의 종류
그리기 모드 | 설명 |
R2_BLACK | 항상 검정색이다. |
R2_WHITE | 항상 흰색이다. |
R2_NOP | 아무런 그리기도 하지 않는다. |
R2_NOT | 원래의 그림을 반전시킨다. |
R2_COPYPEN | 원래의 그림을 덮어버리고 새 그림을 그린다. |
R2_NOTCOPYPEN | 새 그림을 반전시켜 그린다. |
R2_MERGEPEN | OR연산으로 두 그림을 합친다. |
R2_MASKPEN | AND연산으로 겹치는 부분만 그린다. |
R2_XORPEN | XOR연산으로 겹치는 부분만 반전시킨다. |
=6-2-다. Ropmode
static int sx; |
=6-3-가. 윈도우즈의 좌표체계
4/4분면
=6-3-나. 맵핑 모드
=6-3-다. 윈도우와 뷰포트
필요에 따라 원점을 변경시킬 수 있도록 다음 두 함수를 제공
BOOL SetViewportOrgEx( HDC hdc, int X, int Y, LPPOINT lpPoint );//픽셀 단위가 더 사용하기는 쉽다
BOOL SetWindowOrgEx( HDC hdc, int X, int Y, LPPOINT lpPoint );
HDC hdc; |
=6-4-가. bitmap.dsw
#define IDB_BITMAP1 101
올리기 : WM_PAINT
파괴 : WM_DESTROY
=> 속도 빨라짐
HDC hdc; |
=6-4-나. 메모리 DC
-버퍼링
메모리에 먼저 그리고
=6-4-다. BitBlt
값 | 설명 |
BLACKNESS | 대상영역을 검정색으로 가득 채운다. |
DSTINVERT | 화면을 반전시킨다. |
MERGECOPY | 소스 비트맵과 대상 화면을 AND 연산한다. |
MERGEPAINT | 소스 비트맵과 대상 화면을 OR 연산한다. |
SRCCOPY | 소스 영역을 대상 영역에 복사한다. |
WHITENESS | 대상영역을 흰색으로 채운다. |
=6-4-라. StretchBlt
-확대/축소
BOOL StretchBlt( HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop ); |
StretchBlt( |
=6-4-마.비트맵 만들기
=
1. 경계검사
2. 창모양 고정
hWnd = CreateWindow( if (0 == ixPos) if (500 -16 - 48 == ixPos) if (0 == iyPos) iyPos = iyPos - 8; if ((300 - 38 - 48) == iyPos) iyPos = iyPos + 8; |
=
배경
FRONT
LEFT
RIGHT
BACK
#define WIDTH (720+16) |
hWnd = CreateWindow( /*| WS_OVERLAPPED | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_VSCROLL | WS_HSCROLL*/), |
case WM_KEYDOWN: |
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151117 수업 / API_4 남수진 (6) | 2015.11.18 |
---|---|
20151117 윤재희 #4. 그래픽 (5) | 2015.11.18 |
2015-11-17 Win32 API 개인업무일지 - 천정호 (6) | 2015.11.18 |
2015.11.17_개인업무일지_[Win32API #4]_이량경 (6) | 2015.11.18 |
20151117 임현수 업무일지 WIN32API #4 (6) | 2015.11.18 |
20151117 - 강동조 개인업무일지 API 4일차(작성중) (5) | 2015.11.17 |
20151117_박서연_WinAPI(4) (6) | 2015.11.17 |
20151117 - 홍준모 업무일지 (7) | 2015.11.17 |