일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Brute Force
- binary search
- Dijkstra
- two pointer
- DP
- 그래프
- Hash
- 이진탐색
- MYSQL
- Two Points
- Trie
- 다익스트라
- SQL
- union find
- Stored Procedure
- 스토어드 프로시저
- String
- Today
- Total
목록Windows/윈도우즈 API (30)
codingfarm
docs.microsoft.com/en-us/windows/win32/inputdev/mouse-input Mouse 마우스란 일반적으로 쓰는 쥐처럼 생긴 마우스와 노트북의 터치패드, 트랙볼과 그림용 타블릿 등을 모두 포함하는 명칭이다. 마우스 입력에 관한 메시지는 아래와 같은 종류가 있다. 버튼 누름 놓음 더블클릭 좌측 WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK 우측 WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK 중앙 WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK 마우스 메시지는 lParam의 상위 워드에 마우스 버튼이 눌러진 y좌표, 하위워드에 x좌표를 가지며 좌표값을 검출해 내기 위해 HIWOR..
WM_CHAR 메시지 도스(콘솔) 환경에서는 getch, gets, scanf 처럼 명시적으로 입력을 받는 함수들이 따로 있다. 위 입력 함수들은 사용자로부터 입력이 완료될 때까지 프로그램의 실행은 잠시 중단된다. 이는 싱글 태스킹 환경에서는 아무 문제 없지만, 멀티태스킹의 윈도우즈 환경에서는 이런 명시적인 입력 함수가 존재하지 않으며 반드시 메시지를 받아야 한다. 윈도우즈는 포커스(focus)를 가진 프로그램에게 키보드 메시지(WM_CHAR, WM_KEYDOWN)를 보내며 프로그램은 이런 메시지를 받아 키보드 입력을 처리한다. 가령 아무 대화상자나 열어 Tab키를 눌러가면서 포커스를 이동해보면 강조표시가 이동하는것을 볼 수 있다. 한번에 하나의 프로그램만 키보드 입력을 받을 수 있는 이유는 간단하다. ..
비프음을 내는 출력을 낼 수 도 있다. BOOL MessageBeep(UINT uType); docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messagebeep 간단하게 매개변수에 0xFFFFFFFF를 넣으면 경고음이 스피커를 통해 출력된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hIns..
메시지 박스 : 조그만 별도의 윈도우를 열어서 사용자에게 정보를 전달하거나 질문을 하는 장치 MessageBox 함수 호출 한번으로 비교적 간단하게 만들 수 있다. int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType ); 매개변수 기능 hWnd $\bullet$ 메시지 박스의 오너(Owner) 윈도우 $\bullet$ 메시지 박스가 떠 있는동안 오너 윈도우는 사용할 수 없는 상태가 된다. lpText 메시지 박스에 출력할 문자열 lpCaption 메시지 박스의 타이틀 바에 나타날 제목 문자열 uType 메시지 박스에 어떤 종류의 버튼이 나타날 것인가를 지정하는 여러가지 플래그들 uType에 심을 수 있는 값은 아래와 같다. 값..
그래픽 출력도 문자열 출력과 방법은 크게 다르지 않다 아래와 같은 함수들을 사용한다. 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) 모든 GDI 함수의 첫번째 인수는 항상 DC의 핸들인 hdc이다. SetPixel COLORREF SetPixel( HDC hdc, int x, int y, COLORREF color ); 화면에 점..
1. TextOut 콘솔의 printf와 대응하는 함수라 볼 수 있다. BOOL TextOut(HDC hdc, int nXStart, int nYStart, LPCTSTR lpString, int cbString); docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-textouta 매개변수 매개 변수 기능 hdc DC의 핸들 nXStart 문자열이 출력될 좌표 nYStart lpString 출력할 문자열 cbString 출력할 문자열의 길이 문자열을 출력하기 위한 여러 복잡한 정보들(정렬 등)을 DC에 지정하고 TextOut의 인자로 전달함에 주목할것 TextOut 함수는 널 종료 문자열을 인식하지 않으므로 출력할 문자열의 길이를 인수로 반드시 밝..
1. DC(Device Context)의 필요성 윈도우즈는 세가지 DLL(동적 연결 라이브러리)로 구성되어 있다. KERNEL : 메모리를 관리하고 프로그램을 실행한다. USER : 유저 인터페이스와 윈도우를 관리한다. GDI : 화면 처리와 그래픽을 담당한다.(Graphic Device Interface) 윈도우즈 API 함수의 대부분은 이 세가지 DLL에 의해 제공된다. 출력을 위해선 이 중 GDI에 관심을 가져야 한다. 결론부터 말하면 DC는 GDI를 활용해 화면을 그림에 있어서 부수적인 부분을 최소화 하여 개발자들이 당장 필요로 하는 정보에만 집중하게끔 해주는 역할을 담당한다. 이 DC의 역할을 되새기며 화면 출력에 DC가 필요한 이유를 위한 예를 상황과 함께 들어본다. 상황1 화면에 선을 긋는 ..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("First"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance , LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("First"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance , LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_..
API(Application Programming Interface) 응용프로그램이 OS의 기능을 편리하게 사용할 수 있도록, OS나 언어에서 제공하는 인터페이스이다. OS가 응용프로그램을 위해 제공하는 함수의 집합이라고도 정의가능하다. 즉, 프로그램끼리 서로 편리하게 소통하게 해주는 수단이라 볼 수 있다. 그러므로 API는 운영체제와 응용프로그램간의 약속이다. 왜 API를 쓰는가/제공하는가? OS에서 실행되는 응용프로그램은 OS에 종속적일 수밖에 없으므로 OS가 규정한 바대로 하드웨어에 접근해야 한다. 이때 사용자들은 어려운 전문지식 없이 그리고 제공자들은 자신들의 소프트웨어 자산을 숨긴채 사용자들이 OS의 기능을 사용하게끔 해준다. API의 예 대부분의 개발자들은 하드디스크가 파일을 저장하는 장치라는..