일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- 컴퓨터 그래픽스
- Visual Micro
- directx
- 운영체제
- Arduino
- WinAPI
- LineTracer
- Array
- c++
- Deque
- list
- html
- 시스템프로그래밍
- 통계학
- priority_queue
- Stack
- stl
- vector
- 아두이노 컴파일러
- 아두이노
- 자료구조
- 아두이노 소스
- C언어
- queue
- 라인트레이서
- set
- 수광 소자
- arduino compiler
- map
- Today
- Total
목록Programming (135)
Kim's Programming
DrawText TextOut은 한 줄만 출력하므로 기능이 너무 단순합니다. 이보다 조금 더 기능이 많은 문자열 출력 함수로 DrawText라는 함수가 있습니다. 1int DrawText( HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);cs 이 함수는 사각영역을 정의하여 영역 안에 문자열을 출력할 수 있으며 여러 가지 포맷을 설정하는 기능이 있습니다. 윈도우즈에서 사각영역을 정의할 떄는 다음과 같이 정의된 RECT 구조체를 이용합니다.1234567typedef struct_Rect{ LONG left; LONG top; LONG right; LONG bottom;}cs이 구조체는 왼쪽 위의 좌표와 오른쪽 아래의 좌표를 정의함으로써..
인스턴스 클래스는 어디까지 타입일 뿐이지 그 자체가 정보를 저장하는 변수는 아닙니다. 구조체를 선언한다고해서 구조체 변수가 생기는 것이 아닌 것처럼 클래스를 선언한다고 해서 실제로 값을 기억할 수 있는 메모리가 할당되지 않습니다. 클래스 선언은 어떤 타입의 어떤 멤버들이 포함되어 있는지를 컴파일러에게 알리는 역할만 할 뿐이며 클래스형의 변수를 선언해야 실제 메모리가 할당됩니다. Position Here;Complex C; Position Here; 선언에 의해 Position 타입의 변수 Here가 메모리에 생성되며 이후 Here는 특정 위치를 가지는 문자 하나에 대한 정보를 기억할 수 있습니다. Complex C; 선언문은 복소수를 기억하는 변수 C를 생성합니다. int i;선언에 의해 정수형 변수 i..
Class(클래스) C++의 구조체는 멤버 함수를 포함할 수 있다는 면에서 C의 구조체에 비해 의미가 확장되었습니다. 이형 타입 변수의 집합인 구조체가 스스로 동작을 정의할 수 있다는 것은 중요한 의미가 있으며 객체 지향 구현을 위한 첫 걸음이라고 할 수 있습니다. C++의 창시자인 스트로스트룸은 확장된 의미의 구조체에 새로운 이름을 붙여주었는데 그것도 Class입니다.앞에서 예시로 들었던 구조체의 struct를 class로 바꿔주고 선언문 선두에 public: 액세스 지정을 하면 됩니다.12345678class Position{public: int x; int y; char ch; void OutPosition(); };cs모든 구조체들을 이렇게 수정하면 잘 실행됩니다. 확장된 구조체와 클래스의 유일한..
구조체의 확장 멤버함수 구조체는 타입이 서로 다른 이형 변수의 집합입니다. 화면상의 한 좌표와 그 위치에 출력될 문자에 대한 정보를 저장하고 싶다면 다음과 같은 구조체를 선언해야합니다. 좌표값 (x, y)는 정수형이고 문자 ch는 문자형이기 떄문에 서로 타입이 다르고 이형 타입 변수의 집합인 구조체로 묶어서 정의합니다.123456struct Position{ int x; int y; char ch;}cs타입의 이름은 Position이고 이 구조체 안에 x, y, ch 멤버가 포함되어 있습니다. 다음 예제는 이 구조체를 사용하여 화면에 한 문자를 출력합니다. 1234567891011121314151617181920212223#include struct Position{ int x; int y; char c..
new, delete는 C의 malloc, free에 대응되는 C++의 메모리 할당 연산자이며 실행중 메모리를 할당한다는 점에서 용도가 비슷합니다. 포인터 = new 타입[(초기값)]; new 다음에 할당 대상 타입을 밝히면 sizeof(타입)만큼의 메모리가 할당되고 할당된 포인터가 리턴됩니다. new가 리턴하는 번지는 같은 타입의 포인터 변수로 대입받습니다. 할당과 동시에 메모리를 초기화하고 싶으면 타입 다음의 괄호에 원하는 초기값을 적되 초기화를 할 필요가 없으면 생략할 수 있습니다. 초기화하지 않은 메모리는 물론 쓰레기값을 가집니다. 메모리 부족등의 이유로 할당에 실패하면 NULL을 리턴하는데 원치적으로 이 리턴값을 점검해 보아야 하지만 32비트 환경에서는 실패할 확률이 거의 없어 점검을 생략하는 ..
DC(Device Context) 윈도우즈는 세 가지 동적 연결 하이브러리(DLL)로 구성되어 있는데 메모리를 관리하고 프로그램을 실행시키는 KERNEL, 유저 인터페이스와 윈도우를 관리하는 USER 그리고 화면 처리와 그래픽을 담당하는 GDI가 그것들입니다. 윈도우 API함수의 대부분은 이 세 가지 DLL에 의해 제공되고 있습니다. 출력을 하려면 우리는 GDI(Graphic Device Interface)모듈에 특별히 관심을 기울여야 하는데 화면으로 출력되는 모든 글자와 그림은 GDI를 통해야 하기 떄문입니다. DC(Device Context)란 출력에 필요한 모든 정보를 가지는 데이터 구조체이며 GDI 모듈에 의해 관리됩니다. 문자열의 모양을 지정하는 폰트, 선의 색상과 굵기, 채움 무늬와 색상, 그..
윈도우 프로시저 메세지 처리 함수란 메세지가 발생할 때 프로그램의 반응을 처리하는 일을 하며 WinMain함수와는 별도로 WndProc이라는 이름으로 존재합니다. 윈도우 프로시저(Window Procedure)라는 뜻이지만 통상적으로 읽을 때는 윈드 프록으로 읽습니다. WndProc은 WinMain에서 호출하는 것이 아니라 운영체제에 의해 호출됩니다. WinMain내의 메시지 루프는 메세지 루프는 메세지를 메세지 처리 함수로 보내기만 할 뿐이며 WndProc은 메세지가 입력되면 운영체제에 의해 호출되어 메세지를 처리합니다. 이렇게 운영체제에 의해 호출되는 응용 프로그램 내의 콜백(Callback)함수라고 합니다. 콜백 함수라는 용어는 나중에 따로 하겠습니다. WndProc의 인수는 모두 4개이며 MSG구..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);HINSTANCE g_hInst;LPCTSTR lpszClass = TEXT("첫번째"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow){ HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst = hInstance; WndClass.cbClsExtra = 0; WndClass.cb..