HDC GetDC(HWND hWnd); // 생성
int ReleaseDC(HWND hWnd,HDC hDC); //해제
// 윈도우 생성
HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWidth, nHeight, hwndParent, hmenu, hinst, lpvParam) // 윈도우 생성
BOOL ShowWindow(hWnd, nShowCmd) // 윈도우 화면에 출력
------------------------------------------------------------------------
SW_HIDE 윈도우를 숨긴다.
SW_MINIMIZE 윈도우를 최소화하고 활성화 시키지 않는다.
SW_RESTORE 윈도우를 활성화 시킨다.
SW_SHOW 윈도우를 활성화하여 보여준다.
SW_SHOWNORMAL 평범한 스탈일로 윈도우를 활성화하여 보여준다.
//그래픽
COLORREF SetPixel(hdc, nXPos, nYPos, clrref); // 점찍기
DWORD MoveToEx(hdc,x,y,lpPoint); //점 포인트 이동
BOOL LineTo(hdc, xEnd, yEnd); // 선긋기
BOOL Rectangle(hdc, nLeftRect, nTopRect, nRightRect, nBottomRect); // 사각형 그리기
BOOL Ellipse(hdc,nLeftRect, nTopRect, nRightRect, nBottomRect); // 원그리기
HGDIOBJ GetStockObject(int fnObject); // 스톡오브젝트 지정
HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj); // 선택된 오브젝트 값 리턴
BOOL DeleteObject(HGDIOBJ hObject); // 오브젝트 해제
HPEN CreatePen(int fnPenStyle, int nWidth, COLORREF crColor); // 펜 지정
HBRUSH CreateSolidBrush(COLORREF crColor); // 단색 브러쉬
HBRUSH CreateHatchBrush(int fnStyle, COLOREF clrref); //색상 무늬 지정 가능 브러쉬
// 더블 버퍼링
HDC CreateCompatibleDC(HDC hdc); // 메모리 DC생성
HBITMAP LoadBitmap(HINSTANCE hInstance, LPCTSTR lpBitmapName); // 비트맵 불러오기
BOOL BitBlt(HDC hdcDest, int nXDest, int nYdest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop); // DC간의 영역끼리 고속 복사
값 | 설명 |
BLACKNESS | 대상영역을 검정색으로 채운다 |
DSTINVERT | 화면을 반전 |
MERGECOPY | 소스 비트맵과 대상 화면은 AND 연산 |
MERGEPAINT | 소스 비트맵과 대상 화면을 OR 연산 |
SRCCOPY | 소스 영역을 대상 화면에 복사 |
WHITENESS | 대상 영역을 흰색으로 채운다. |
BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop); // DC영역끼리 확대 및 축소 복사 가능
// 그리기 모드
int SetROP2(HDC hdc, int fnDrawMode); // 그리기 모드 변경
그리기 모드 | 설명 |
R2_BLACK | 항상 검정색 |
R2_WHITE | 항상 흰색 |
R2_NOP | 아무런 그리기도 하지 않는다. |
R2_NOT | 원래의 그림을 반전 |
R2_COPYPEN | 원래의 그림을 덮고 새그림 그림 |
R2_NOTCOPYPEN | 새 그림을 반전 |
R2_NOTXORPEN | XOR한 결과의 반대값을 써 넣음 |
R2_MERGEPEN | OR연산으로 두 그림을 합친다. |
R2_MASKPEN | AND연산으로 겹치는 부분만 그린다. |
R2_XORPEN | XOR연산으로 겹치는 부분만 반전 |
int GetROP2(HDC hdc); // 그리기 모드 조사
// 텍스트
BOOL TextOut(HDC hdc,int nXStart,int nYStart, LPCTSTR lpString, int cvString); // 문자 출력
int DrawText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); // 문자 출력
값 | 설명 |
DT_LEFT | 수평 왼쪽 정렬 |
DT_RIGHT | 수평 오른쪽 정렬 |
DT_CENTER | 수평 중앙 정렬 |
DT_BOTTOM | 사각영역 바닥에 출력 |
DT_VCENTER | 사각영역 수직 중아에 출력 |
DT_WORDBREAK | 사각영역 오른쪽 끝에서 자동 개행 |
DT_SINGLELINE | 한줄로 출력 |
DT_NOCLIP | 사각영역 경계 벗어나도 그대로 출력 |
UINT SetTextAlign(HDC hdc, UINT fMode); // 문자열 정렬
값 | 설명 |
TA_TOP | 상단 |
TA_BOTTOM | 하단 |
TA_CENTER | 중앙 |
TA_LEFT | 왼쪽 |
TA_RIGHT | 오른쪽 |
TA_UPDATECP | CP를 사용하여 문자열 출력 후에 CP변경 |
TA_NOUPDATECP | CP사용 안함, CP변경 안함 |
// 메시지
int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UNIT uType); // 메시지 박스
BOOL MessageBeep(UINT uType); // 메시지 비프
LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); // 강제 메시지전달
// 무효영역
BOOL InvalidateRect(HWND hWnd, CONST RECT*lpRect, BOOl bErase); TRUE 이면 무효화
// 타이머
UINT SetTimer(HWND hWnd, UINT nlDEvent, UINT uElapse, TIMERPROC lpTimerFunc); //타이머 설정
BOOL KillTimer(HWND hWnd, IINT ulDEvent); // 타이머 해제
// 작업영역
BOOL GetClientRect(HWND hWnd, LPRECT lpRect); // 작업영역 크기 조사
// 폰트
HFONT CreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, DWORD fdwPitchAndFamily, LPCTSTR lpszFace); // 폰트 생성
HFONT CreateFontlndirect(CONST LOGFONT *lplf); // 조금더 간단한 폰트 생성
COLORREF SetTextColor(HDC hdc, COLORREF crColor); // 글꼴 색 설정
GetTextColor // 글꼴 설정 얻어오기
COLORREF SetBkColor(HDC hdc, COLORREF crColor); // 글 뒤쪽 배경색
GetBkColor // 글꼴 배경색 얻어오기
int SetBkMode(HDC hdc, int iBkMode) // OPAQUE : 불투명한 배경, TRANSPARENT : 투명한 배경 사용
// 버튼 만들기 : WM_CREATE
CreateWindow(TEXT("button"),TEXT("Click Me"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 20,20,100,25,hWnd(부모될 윈도우),(HMENU)0(ID번호),g_hInst(메인인스턴스),NULL);
---------------------------------------------------------
스타일 설명
BS_PUSHBUTTON 푸시 버튼
BS_DEFPUSHBUTTON 디폴트 푸시 버튼
BS_CHECKBOX 체크박스
BS_3STATE 3가지 상태를 가지는 체크 박스
BS_AUTOCHECKBOX 자동 체크 박스
BS_AUTO3STATE 3가지 상태를 가지는 자동 체크 박스
BS_RADIOBUTTON 라디오 버튼
BS_AUTORADIOBUTTON 자동 라디오 버튼
BS_GROUPBOX 그룹 박스
---------------------------------------------------------
부모와의 통신
인수 | 설명 |
HIWORD(wParam) | 통지 코드 |
LOWORD(wParam) | 컨트롤의 ID |
lParam | 메시지를 보낸 차일드 윈도우의 윈도우 핸들 |
체크박스
BM_GETCHECK : 체크 박스가 현재 체크되어 있는 상태인지를 조사하며 wParam,lParam은 사용하지 않는다. 체크 상태는 리턴값으로 반환
BM_SETCHECK : 체크 박스의 체크 상태를 변경하며 wParam에 변경할 체크 상태를 지정
상수 | 값 | 의미 |
BST_UNCHECKED | 0 | 현재 체크되어 있지 않다. |
BST_CHECKED | 1 | 현재 체크되어 있다. |
BST_INDETERMINATE | 2 | 체크도 아니고 안 체크도 아닌 상태 |
라디오 버튼
BOOL CheckRadioButton(HWND hDlg, int nIDFirst, int nIDLast, int nIDCheck); // 처음 선택될 라디오 버튼 지정
// 컨트롤과의 통신
HWND GetDlgItem(HWND hDlg, int nIDDlgItem); // 해당 콘트롤 ID에 따른 윈도우 핸들구하기
int GetDlgCtrlID(HWND hwndCtl); // 핸들에 대한 ID값 구하기
LONG SendDlgItemMessage(HWND hDlg, int nID, UINT Msg, WPARAM wParam, LPARAM lParam);
// 핸들을 구한후 메시지 보내기 SendMessage(GetDlgItem(hDlg,ID)...... 를 간단히 표현
UINT GetDlgItemText(HWND hDlg, int nID, LPTSTR lpString, int nMaxCount);
// 컨트롤의 문자열 값 얻어오기
BOOL SetDlgItemText(HWND hDlg, int nID, LPCTSTR lpString);
// 컨트롤에 문자 지정하기
UINT GetDlgItemInt(HWND hDlg, int nID,BOOL *lpTranslated, BOOL bSigned);
// 컨트롤의 정수 값 얻어오기
BOOL SetDlgItemInt(HWND hDlg, int nID, UINT uValue, BOOL bSigned);
// 컨트롤에 정수값 지정하기
BOOL CheckDlgButton(HWND hDlg, int nIDButton, UINT uCheck);
// 체크박스 및 라디오 버튼 상태 지정하기
UINT IsDlgButtonChecked(HWND hDlg, int nIDButton);
CheckDlgButton(hDlg,IDC_BOLD,bBold ? BST_CHECKED:BST_UNCHECKED);
// 체크박스 및 라디오 버튼 상태 얻어오기
bBold = (IsDlgButtonChecked(hDlg,IDC_BOLD)==BST_CHECKED);
'C/C++ > API' 카테고리의 다른 글
2009.07.27 API KEY입력 (0) | 2009.07.27 |
---|---|
2009.07.27 API도형그리기 (0) | 2009.07.27 |
2009.07.24 API 수업 (0) | 2009.07.24 |
2009.07.23 API 수업 (0) | 2009.07.23 |
WINAPI (0) | 2009.07.22 |
댓글