DCDC는 Device Context를 의미하며, DC의 개념에 대해 알아야한다.윈도우즈는 세 가지 동적 연결 라이브러리(DLL)로 구성되어 있는데 메모리를 관리하고 프로그램을 실행시키는 KERNEL, 유저 인터페이스와 윈도우를 관리하는 USER, 그리고 화면 처리와 그래픽을 담당하는 GDI 이다.DC는 출력에 필 요한 모든 정보를 가지는 데이터 구조체이며 GDI 모듈에 의해 관리된다.DC가 필요한 이유는 아래와 같다. DC 설명DC는 3가지 역할이 있다고 사료된다.3가지는 저장소 역할, 원점에 대한 정보, 완충 역할으로 각 역할은 아래에 설명한다.DC의 저장소 역할화면에 선을 긋은 LineTo라는 함수가 존재한다. LineTo 함수는 LineTo(X1,Y1,X2,Y2)와 같은 식으로 구성되어 있다...
개발
간단한 예제를 만들 예정이다.#include #include void main(){ clrsr(); getch();}깨끗한 화면을 보여주고, 키보드가 눌러질 때까지 기다렸다가 종료하는 간단한 프로그램을 Win api로 만들어 본다.예제 소스 코드#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 WndCl..
변수 명명법윈도우즈 프로그래밍에서 주로 사용되는 접두어들이 존재한다.접두어원래말의미cbCount of Bytes바이트 수dwdouble word부호없는 long형 정수hhandle윈도우, 비트맵, 파일 등의 핸들szNull TerminatedNULL 종료 문자열chCharacter문자형aArray배열wWord부호없는 정수형iInteger정수형p, iplong pointer포인터형bBool논리형윈도우즈 프로그래밍에서 쓰이는 이런 변수 명명법을 헝가리식 명명법이라고 한다.물론 이렇게 쓰면 편하다 라는 관례이지, 필수조건은 아니다. 유니코드유니코드는 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드 체계이다.유니코드를 지원하려면 문자형이나 문자열에 대해 C언어의 타입을 바로 쓰지 말고 ..
1. SetSortRule 함수와 멤버 comp1. SetSortRule 함수의 호출을 통해서void SetSortRule(List* plist, int (*comp)(LData d1, LData d2)){ plist -> comp = comp;} 2. 멤버 comp가 초기화되면typedef struct _linkedList{ Node* head; Node* cur; Node* before; int numOfData; int (*comp)(LData d1, LData d2);} LinkedList; 3. 정렬 관련 SInsert 함수가 호출된다.void LInsert(List* plist, LData data){ if(plist->comp == NULL) ..
1. 단순 연결 리스트의 ADT와 구현/* 추가된 함수 */void SetSortRule(List* plist, int (*comp)(LData d1, LData d2));- 리스트에 정렬의 기준이 되는 함수를 등록한다.인자로 전달이 가능한 함수의 예는 아래와 같다.int WhoIsPrecede(LData d1, LData d2){ if(d1 새 노드를 연결 리스트의 머리에 추가하는 경우장점 : 포인터 변수 tail이 불필요하다.단점 : 저장된 순서를 유지하지 않는다. 새 노드를 연결 리스트의 꼬리에 추가하는 경우장점 : 포인터 변수 tail이 불필요하다.단점 : 저장된 순서를 유지하지 않는다. SetSortRule 함수 선언에 대한 이해 (정렬)void SetSortRule(List* plist..
1. 연결 리스트의 개념적인 이해동적할당(malloc( ), free( ) 함수)을 진행한다.(프로그램 실행 중간에 할당한다.)동적할당이란?프로그램 실행중인 런타임에 메모리 공간을 확보한다.Ex). 1024byte 메모리를 할당하고 1byte를 사용한다면, 비효율적이다. 필요한 만큼 메모리 공간을 확보하고 메모리 공간을 해제하는 것이 동적할당의 장점이다. 1.1 LinkedRead.c#include #include typedef struct _node{ int data; struct _node * next;} Node;int main(void){ Node * head = NULL; // NULL 포인터 초기화 Node * tail = NULL; Node * cur = NULL; Node * newN..
1. 추상 자료형: Abstract Data Type추상 자료형 간단하게 ADT 를 의미한다.ADT의 주된 정의는 아래와 같다.구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지 나열한 것 전등의 추상 자료형을 정의해 본다면,ADT of Lamp- Data : Power, LeftButton, RightButton (전원, 왼쪽 버튼, 오른쪽 버튼)-operation : PowerOn() 전원을 키다. : PowerOff() 전원을 끄다. : LeftButtonClick() 왼쪽 버튼 클릭 ..
1. 함수의 재귀적 호출의 이해재귀함수란 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다.void Recursive(void){ printf("Recursive call"); Recursive();}위의 소스코드를 확인하면, 함수의 종료가 이루어지기 전, 다시한번 Recursive 함수를 호출하는 것을 볼 수 있다.즉, 계속해서 호출이 된다는 것이다.하지만, 재귀 함수의 문제는 계속해서 호출되는 문제가 있다. 이런 문제는 Recursive 함수에 '재귀의 탈출조건' 이 없다는데 원인이 있다.#include void Recursive(int num){ if(numRecursive call! 3Recursive call! 2Recursive call! 1여기서의 재귀의 탈출 조건은 if 문이 담당하고..