전체 글

QA Engineer Coding Blog!! QA이지만 자동화와 개발에 관심이 많고 업무에 접목하고 싶어하는 평범한 QA 입니다.
상속은 유도 클래스는 기초 클래스가 지니는 모든것을 지니고, 또한 유도 클래스만의 특성이 정해진다.이 처럼 클래스의 상속에서는 하나의 베이스가 되는 기초 클래스와 유도 클래스만의 관계가 성립된다. 그렇다면 적절한 상속 관계란 무엇이 있을까? * IS-A 관계 IS-A 관계란 영어에서 is a( "~ 이다.") 라는것으로 상속관계에서 유도 클래스와 기초 클래스와의 적저한 관계를 표현하는 것을 말한다. (상속의 깊이를 더하기 위해서..) Human Is a Tom [사람은 톰이다 (X)] -> 사람이 모두 톰이 될 수는 없다.Tom Is a Human [톰은 사람이다 (O)] -> 톰은 사람이 될 수 있다(사람이다) 위 처럼 각 클래스간에 일종의 상위 개념으로 이해하면 될 것이다.다른 예로는 철수는 아버지의..
C++ 구조체에 멤버 변수를 사용하는것에 있어서 직접참조와 간접참조를 나눌수 있습니다. 직접참조를 하는 경우 [.] 을 사용하고 간접참조는 [->]를 사용합니다. [ (*ptStruct).a = value) 식을 사용하지만 번거롭기에 ->를 사용합니다. (같은 뜻)] 왜 간접참조를 하는것일까? 궁금하지 않을 수 없었습니다. 괜히 있어보여서??? 그런것도 아닐텐데 말이지요..이에 대해서 몇가지 테스트를 통해서 알아보도록 하겠습니다. 일단 왜 굳이 포인터를 사용해서 간접참조를 하는것인가? 1. 구조체의 크기의 차이가 발생한다. [결과] 구조체 NUM의 경우 멤버 변수의 갯수만큼 크기가 잡힙니다. 하지만 구조체 포인터의 경우는 4바이트 입니다.(당연한것...) 만약 많은 양의 데이터가 포함된 구조체라면 간접참..
이제 어떤 방법으로 화면에 표시된 사각형들이 깜빡이지 않고 출력되는지 코드를 자세히 살펴보겠습니다.다른 부분들은 이미 이전에 설명을 했으니 void DrawIMG() 함수만을 조금 더 자세히 살펴보겠습니다. RECT crt; 현재 윈도우 클라이언트 영역의 크기를 저장할 RECT를 선언합니다. GetClientRect ( _hWnd , &crt); 윈도우 클라이언트의 영역의 좌표를 가져옵니다 . 클라이언트는 영역의 왼쪽 위 모서리의 좌표는 0, 0으로 지정됩니다. BOOL WINAPI GetClientRect( _In_ HWND hWnd, _Out_ LPRECT lpRect ); 매게 변수 의미 hWnd 좌표를 검색할 클라이언트의 핸들 값을 지정합니다. lpRect 클라이언트의 좌표를 저장한 RECT 구조..
이제 기본적인 비트맵을 출력해봤으니 더블 버퍼에 대해서 알아보도록 하겠습니다. 먼저 아래 코드를 작성해보겠습니다. void DrawIMG() { InvalidateRect( _hWnd , NULL ,TRUE); } LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static RECT rc = {0 ,250 , 100 , 350}; switch (iMessage) { case WM_CREATE: { SetTimer (hWnd , 1 , 25 ,NULL); break; } case WM_TIMER: { DrawIMG(); rc.left += 1; rc.right +..
그럼 비트맵 출력 코드를 살펴보겠습니다. (WIndows API - #9 -1. 그래픽 처리 (Old를 같이 쓰는 이유) (1) 에서 설명된 내용은 제외하였습니다.) 먼저 , 윈도우즈에서는 비트맵을 곧바로 화면 DC로 출력하는 함수를 제공하지 않는다고 합니다. 비트맵의 크기가 다른 데이터에 비해 크기 때문에 출력속도가 낮기 때문이라고 합니다. 이 때문에 해당하는 파일을 먼저 읽어드리고(그리고) 난후에 출력해야하기 때문에 메모리 DC라는것을 만들어 화면 DC에 고속으로 복사하여 출력합니다. (그려지는 과정이 보여지지 않도록) #include "resource.h" resource.h 파일을 포함시킵니다. 해당 파일에는 추가한 이미지에 대한 정보가 들어있습니다. HDC hdc,MemDC; 메모리 DC라는것을..
윈도에 비트맵을 띄워봅시다! 게임을 만들거나 또는 어떠한 프로그램을 만들때 비트맵은 아주 중요한 리소스 입니다. 게임에서는 캐릭터, 배경 등등 거의 모든것을... 프로그래밍에서는 보다 멋진 인터페이스를 제공할 수도 있을 것 입니다. 아무튼 이제 이미지를 출력해보도록 하겠습니다. 먼저 리소스에 비트맵을 추가합니다. 비트맵 추가하는 법 1. 리소스 파일 -> 추가 -> 리소스를 클릭합니다. 2. 리소스 추가 항목에서 Bitmap을 클릭하고 가져오기를 누릅니다. (새로 만드셔도 됩니다만..그럴 분은 없겠죠?) 정상적으로 리소스를 추가하셨다면, "resource.h" 해더 파일과 비트맵이 추가되어 있습니다. 그 다음 아래와 같은 코드를 입력하시면 됩니다. #include "resource.h" LRESULT C..
기본적인 사각형을 그리는 코드를 조금 자세히 살펴봤으니 해당하는 구조로 사용해야하는 이유에 대해서실험을 통해 알아보도록 하겠습니다. * OLD를 왜 써야 하는가? 이 게시물에 가장 중요한 주제입니다. 간단히 말해서 기존에 생성한 GDI 오브잭트를 삭제하기 위해서 입니다.계속해서 GDI 오브잭트를 생성하고 삭제를 하지 않는 다면, 나중에는 리소스가 쌓여서 프로그램에 악영향을 미치게 될 것 입니다. 물론 간단한 프로그램은 괜찮겠지만 지속적인 추후 프로그래밍을 위해 생성된 오브잭트와 읽어드린 파일,생성한 힙 메모리 등은 당연히 해제를 해줘야 하는것이 좋은 습관이기 때문입니다. 그럼 OLD를 사용하는 이유에 대해서 알아보도록 하겠습니다. 1. 기존에 선택한 속성의 GDI 오브잭트는 선택된 상태에서 삭제가 되지 ..
그 동안 윈도우에 여러가지 그래픽을 출력할때 습관적으로 Old를 같이 써왔습니다.왜 Old를 같이 써야하는지... 이유도 모르고 말이죠...(적어도 지금까지의 저는 그랬습니다...)그래픽을 출력하는 함수와 순서 부분부터 OLD를 사용하는 부분까지 자세히 분석해보겠습니다. HDC hdc;PAINTSTRUCT ps;HBRUSH MyBrush , OldBrush; switch (iMessage){case WM_PAINT: {hdc = BeginPaint(hWnd , &ps); MyBrush = (HBRUSH)GetStockObject(GRAY_BRUSH);OldBrush = (HBRUSH)SelectObject(hdc , MyBrush);Rectangle(hdc , 100 , 100, 200 , 200);Se..
QA Engineer  - P군
QA Engineer Coding Blog