본문 바로가기

Programming Study

출력 DC(Device Context) DC란 출력에 필요한 모든 정보를 가지는 데이터 구조체이며, GDI 모듈에 의해 관리 된다. DC를 얻는 방법 1. GetDC 함수를 사용하여 DC를 얻고 사용 후 ReleaseDC로 해제. HDC GetDC(HWND hWnd); int ReleaseDC(HWND hWnd, HDC hDC); 2. WM_PAINT 메시지 루틴에서만 사용할 수 있는 방법 BeginPaint 함수로 얻고 EndPaint 함수로 해제. HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint); BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint); 문자열의 출력 1. TextOut BOOL TextOut(HDC hdc in.. 더보기
윈도우즈 프로그래밍 한번 알아보기 아래 소스 프로그램은 윈도우즈 API를 통해 만들어진 예제 소스이다. 아무 하는 일 없이 만든 후 종료되는 그런 프로그램이다. #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("First"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpszCmdParam, int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst = hInstance; WndClass.cbClsExtra = 0; WndClass.cbWndExtra =.. 더보기
윈도우즈 프로그래밍 도스 또는 콘솔 환경과 윈도우즈의 차이점 및 특징 1. 그래픽 기반(GUI)의운영체제이다. 2. 멀티 태스킹이 가능하다. 3. 메시지 구동 시스템이다. 4. 장치에 독립적이다. 5. 일관성이 있다. 6. 리소스가 분리되어 있다. API란 - Application Programming Interface의 약자이며, 우리말로 풀어본다면 "운영체제가 응용 프로그램을 위해 제공하는 함수의 집합"이라고 정의 할 수 있다. - API는 특정 시스템을 프로그래밍 하기 위한 함수 집합을 이르는 일반 명사. - 그중 하나가 윈도우즈 API이나 요즘은 일반적으로 API라고 하면 윈도우즈 API를 말하는 경우가 많다. - API와 비슷한 말로 SDK(Software Development Kit)라는 표현이 사용되기도 한다... 더보기
파일의 분할과 헤더파일의 디자인 파일을 나누는 이유 파일을 나눠서 각각의 파일에, 용도 및 특성 별로 함수와 변수를 나눠서 저장하면 소스 코드의 관리가 용이해지기 때문이다. 외부 선언은 extern 다른 파일에서 접근을 못하게 하고 싶을땐 static 헤더파일의 디자인과 활용 #include 지시자 - 파일의 내용을 단순히 포함시키는 용도로 사용. 헤더파일을 include하는 두가지 방법 1. #include - 이 방식은 표준 헤더파일이 저장되어 있는 디렉터리에서 파일을 찾게 된다. 2. #include "헤더파일 이름" - 이 문장을 포함하는 소스파일이 저장된 디렉터리에서 헤더파일을 찾는다. 때문에 프로그래머가 정의하는 헤더파일을 포함시킬 때 사용하는 방식이다. - 이 방식을 사용하면 다음과 같이 헤더파일의 이름뿐만 아니라, 드라이.. 더보기
매크로와 선행처리기 선행처리란 - 컴파일 이전의 처리를 의미한다. 선행처리 명령문은 #문자로 시작을 하며, 컴파일러가 아닌 선행처리기에 의해서 처리되는 문장이기 때문에 명령문의 끝에 세미콜론을 붙이지 않는다. 대표적인 선행처리 명령문 #define : 오브젝트 유사 매크로(Object -like macro) - 오브젝트라는 것은 그 자체로 '완전한 의미를 갖는 대상이나 사물'을 의미한다. - 아래에서 정의한 매크로 PI는 그 자체로 3.14.15라는 상수를 의미하기 때문에 '오브젝트와 유사한 매크로' 또는 '오브젝트와 비슷한 매크로'라 하는 것이다. "매크로 PI를 매크로 몸체 3.14.15로 치환하세요"라는 문장이다. 매크로의 이름은 대문자로 정의하는 것이 일반적이다. 대문자로 정의함으로써 이 식별자가 매크로라는 사실을 .. 더보기
메모리 관리와 메모리 할당 메모리의 구성 프로그램 실행 시 운영체제에 의해서 마련되는 메모리의 구조는 네개의 영역으로 구분 된다. 메모리 영역별로 저장되는 데이터 유형 코드영역(Code Area) - 실행할 프로그램의 코드가 저장되는 메모리 공간이다. 따라서 CPU는 코드 영역에 저장된 명령문들을 하나씩 가져가서 실행을 한다. 데이터영역(Data Area) - 전역변수와 static으로 선언되는 static 변수가 할당된다. - 이영역에 할당되는 변수들은 프로그램의 시작과 동시에 메모리 공간에 할당되어 프로그램 종료 시까지 남아 있게 된다는 특징이 있다. 스택영역(Stack Area) - 지역변수와 매개변수가 할당된다. - 이 영역에 할당되는 변수들은 선언된 함수를 빠져나가면 소멸된다는 특징이 있다. 힙영역(Heap Area) -.. 더보기
파일 입출력 fopen 함수호출을 통한 파일과의 스트림 형성과 FILE 구조체 다음은 스트림을 형성할 때 호출하는 함수이다. 이 함수의 호출을 통해서 프로그램상에서 파일과의 스트림을 형성 할 수 있다. #include FILE *fopen(const char *filename, const char *mode); -> 성공 시 해당 파일의 FILE구조체 변수의 주소 값, 실패시 NULL 포인터 반환 위 그림은 프로그램상에서 fopen 함수를 호출 했을 때 일어난 일들을 정리해 놓은 것이다. 위 그림에서 주목할 부분은 다음 세가지 이다. 1. fopen 함수가 호출되면 FILE 구조체 변수가 생성된다. 2. 생성된 FILE 구조체 변수에는 파일에 대한 정보가 담긴다. 3. FILE 구조체의 포인터는 사실상 파일을 가리키.. 더보기
구조체와 사용자 정의 자료형_2 typedef 선언 - typedef선언은 기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것을 목적으로 하는 선언. typedef int INT; // int의 또 다른 이름 INT를 부여 ->자료형의 이름 int에 INT라는 이름을 추가로 붙여 줌 INT num; // int num; 과 동일한 선언 INT *ptr; // int *ptr; 과 동일한 선언 구조체의 정의와 typedef 선언 struct point { int xpos; int ypos; }; // 이 상황에서는 다음과 같이 구조체 변수를 선언해야 한다. struct point pos; // 그런데 다음과 같이 typedef 선언이 이뤄지고 나면 typedef struct point Point; // 이후로는 Point pos; /.. 더보기
구조체와 사용자 정의 자료형_1 구조체(structure)의 정의 - 구조체라는 것은 하나 이상의 변수(포인터 벼수와 배열 포함)를 묶어서 새로운 자료형을 정의하는 도구이다. - 구조체를 기반으로 새로운 자료형을 정의 할 수 있다. 구조체 변수의 선언과 접근 struct type_name val_name; //구조체 변수선언의 기본 형태 struct point //point라는 이름의 구조체 정의 { int xpos; //point 구조체를 구성하는 멤버 xpos int ypos; //point 구조체를 구성하는 멤버 ypos }; struct point pos; //point구조체의 변수 pos선언 구조체 접근의 기본형식 - 구조체 변수의 멤버에 접근할 때에는 .연산자를 사용. 구조체 변수의 이름.구조체 멤버의 이름 예를 들면 pos.. 더보기
문자와 문자열 관련 함수 데이터의 이동 수단이 되는 스트림 스트림이란? - '한 방향으로 흐르는 데이터의 흐름' - 스트림이란 단어에는 단 방향으로만 데이터의 전송이 이뤄진다는 뜻이 담겨 있다. 실제로 입출력 스트림도 입력 스트림과 출력 스트림이 구분되어서 한 방향으로만 데이터의 흐름을 유지하고 있다. 운영체제에서 제공하는 소프트웨어적인(소프트웨어로 구현되어 있는)가상의 다리가 스트림이다. 다시 말해서, 운영체제는 외부장치와 프로그램과의 데이터 송수신의 도구가 되는 스트림을 제공한다. 스트림의 생성과 소멸 - 콘솔 입출력을 위한 '입력 스트림'과 '출력 스트림'은 프로그램이 실행되면 자동을 생성되고, 프로그램이 종료되면 자동으로 소멸되는 스트림이다. - 이 둘은 기본적으로 제공되는 '표준 스트림(standard stream)'이.. 더보기