일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- doit코틀린프로그래밍
- 이지스퍼블리싱
- tipssoft
- 티스토리
- VS ERROR
- Win32
- 백준
- 프로그래밍
- CS
- Direct2D
- 알고리즘
- Windows
- Javascript
- 문법
- 배열
- Visual Studio
- 김성엽
- c#
- 지식나눔강좌
- Programming
- c++
- Tips프로그래밍강좌
- 포인터
- 리뷰
- Tips강좌
- 연산자
- Desktop
- c
- 함수
- Kotlin
- Yesterday
- Today
- Total
목록All (383)
F.R.I.D.A.Y.
실제 기능 구현 윈도우 생성 이전 두 개의 포스트를 통해 그리기 작업과, 맵데이터 관리/처리는 해결했다. 이제, 그래픽 작업과 맵데이터를 작동시키기 위한 메인 윈도우를 구성하자. 멤버 윈도우에서 관리할 멤버들은 다음과 같다. DrawTool* TextTool* IMap* D2D1_POINT_2F MovePoint size_t window_padding, window_gap 여기에서 MovePoint는 메서드 처리 후, 그리기 처리를 할 때 필요다. 그리고 window_padding과 window_gap은 각 블럭 사이 간격과 window border와 블럭간의 거리를 상수로 처리한 것이다. 메서드 이벤트 처리를 위한 메서드는 총 6개로, 다음과 같다. OnLButtonDown OnRButtonDown O..
지뢰찾기의 각종 정보를 저장하고 관리하는 맵데이터 맵 데이터 지뢰찾기를 구성하려면 블럭이 열린 상태인지, 선택된 상태인지, 열리지 않은 상태인지를 저장하는 공간과 함께 해당 요소가 지뢰로 동작하도록 처리가 되었는지 저장하는 상태 정보 저장용 블럭이 필요하다. Block 지뢰 찾기를 구성할 때 각 셀의 정보를 저장하기 위해 구현한 클래스이다. Block 클래스에서 관리해야할 항목은 총 세가지이다. 블럭의 지뢰 활성화 여부 블럭의 공개 상태 블럭 주변의 지뢰 수 마지막 항목인 주변 지뢰 수의 경우에는 굳이 관리를 하지 않아도 상관은 없지만, 일단 한번에 처리를 해야 나중에 연산을 줄일 수 있기 때문에 처리를 했다. 포함 멤버 위에서 설명한 데이터를 관리하기 위해 총 세 개의 멤버로 구성되어 있다. BLOCK..
지뢰찾기 그래픽 처리를 위한 구성 그리기 작업 GUI 프로그래밍을 위해서 그리기 툴을 구성해봤다. 그리고, 해당 그리기 툴을 다른 곳에서도 이어서 사용할 수 있도록 그리기 정보를 담고 있는 객체를 생성 및 이들을 관리하는 클래스를 구성해봤다. 그리기 툴 DrawTool 그래픽 엔진은 Direct2D를 이용했고, 이를 다른 프로그램에서 쉽게 이용할 수 있도록 정형화했다. 먼저 구성할 메서드는 다음과 같다. OnPaint(DrawSet*) OnSize 위 두 메서드는 그리기 작업에 영향을 주는 WM_PAINT와 WM_SIZE 메시지가 들어왔을 때 해당 프로시저에서 각각 연결해주면 된다. OnPaint에 인자로 넘기는 은 하단에 설명을 잇는다. 생성자 ID2D1HwndRenderTarget을 생성할 때는 기본..
지뢰찾기 지뢰찾기는 정말 고전 게임이다. 동시에 게임의 기본을 배움에 있어 도움이 될 것 같기도 하다. 구현 또한 그리 어렵다고 느끼지 않기 때문이다.[# 적어도 내가 느끼기엔 그랬다.] 지뢰찾기 룰은 게임상 존재하는 모든 지뢰를 찾아낸다는 점을 제외하고는 잘 몰랐다. 때문에 지뢰찾기를 구현하기에 앞서 게임의 룰을 생각했다. 지뢰찾기 룰 생각한 지뢰찾기는 아래와 같았다. 게임 클리어 조건은 애매모호한 점이 많아서 구글에서 인스턴스 게임으로 제공하는 지뢰찾기 룰을 이용했다.[# 게임은 그렇게 못해서, 클리어 조건을 체크하는데 시간이 좀 걸렸다.] 주변 팔방[# 상하좌우 네 방향 및 그 대각선 네 방향]에 지뢰가 존재할 경우 그 수를 세고, 열었을 때 보여준다. 주변 팔방에 지뢰가 존재하지 않는경우, 주변 ..
Visual Studio 2022의 Preview 버전이 공개되었다. 현재는 영어로만 지원한다고 나와있다. # 아래 내용은 Preview 버전 리뷰 특성상 언제든지 변경될 가능성이 존재하는 내용입니다. 변경사항 다음과 같은 변경 사항이 있다. 64비트 IDE로 전환 여태까지는 64비트 프로그램을 작성하던 32비트 프로그램을 작성하던 32비트 기반 Visual Studio에서 작성했었다. 애초에 Visual Studio에는 64비트 버전이 존재하지 않았다. 그러나 2022 버전이 공개되면서 나온바로는 32비트 기반 프로세스가 64비트 프로세스로 변경되었다. Visual Studio의 주된 프로세스는 devenv.exe로, 해당 프로세스가 32비트에서 64비트로 전환되었다. Windows 11또한 64비트 ..
C6385 문제와 동일한 원인으로 발생하는 것으로 판단되는 경고 발생 재현 해당 문제 또한 C6385에서 언급한 것처럼 포인터 문법을 사용해 동적할당을 하는 경우에 잘 발생합니다. MS 공식 문서에 따르면 범위를 벗어난 공간에 접근하는 경우 문제가 발생하므로 해당 문제를 알아차릴수 있도록 C6386 경고를 띄우는 것으로 알려져 있습니다. 원인 C6385와 마찬가지로 Visual Studio[# Microsoft Visual Studio Community 2019 버전 16.10.2]의 인텔리센스의 문제로, 코드에서 범위를 알 수 없기 때문에 해당 경고를 발생시킵니다. 경고 해제 경고 해제는 다음 포스트를 참고하세요. pragma disable vs pragma suppress 경고 예외 처리를 위해 코드..
메모리 관련 작업을 하면 주로 보이는 C6385 발생 재현 C6385 경고는 주로 메모리 할당 관련 작업을 할 때 일어납니다. MS 공식 문서의 내용을 보면 접근이 허용된 메모리 공간을 벗어난 경우에 이런 경고를 띄우는 것으로 안내하고 있습니다. int arr[10]; int i = 0; while(i
이미 시중에 CS로 만들어진 ADBlock 프로그램이 존재하지만 기억나지 않을 정도로 익숙해져버린 카카오톡 PC AD. 존재하는것은 상관 없지만, 창의 일정 부분을 저렇게 차지하다보니 공간 낭비가 아닐 수 없다. 이미 시중에 C#으로 만들어진 ADBlock 프로그램이 존재하지만, 원리나 한번 알아보자고 만든 코드. #include #include #include using namespace std; int main() { HWND kakao; kakao = FindWindowW(L"EVA_Window_Dblclk", L"카카오톡"); char titleKao[100]{}; GetWindowTextA(kakao, titleKao, 99); cout
먼저 들어온 데이터가 먼저 나오는 선입선출 구조 물건을 구매한다고 가정하면, 먼저 계산대에 줄을 선 사람이 물건 계산을 하는 것이 지당한 이야기다. 이렇게 먼저 들어온 데이터가 먼저 나가도록 하는 구조를 프로그램에서도 적용이 가능한데, 이 기능을 위해 Queue를 이용할 수 있다. 큐 데이터 구조를 말하라고 하면 스택과 함께 먼저 거론되는 자료형이 아닐까 싶다. 큐는 스택과 같이 두 가지 필수 함수가 구성되어야 한다. push pop 구현 큐는 크게 두 가지 방법으로 구현을 할 수 있다. 배열을 이용하는 방법과 연결리스트를 이용하는 방법이 있는데, 둘 모두 장단점이 있다. 배열을 활용한 구현 배열 구현은 구현 자체가 간단하다는 장점이 있다. 다만 이는 재사용성을 생각하지 않을 때의 경우이고, 이미 사용한..
처음 들어간 데이터가 가장 마지막으로 출력되는 자료구조 자료구조를 따지면 가장 먼저 나오는 구조라고 불러도 이상하지 않을만큼 익숙한 자료구조이다. 스택 Last In First Out이란 단어로 설명이 가능하겠다. 스택은 두 개의 필수 명령이 있다. push pop 입력을 할 때[# 스택에 값을 넣을 때]는 push, 출력할 때[# 스택에서 값을 뺄 때]는 pop으로, 이 명령을 이용해 다음과 같은 작업을 수행한다고 가정하면 push 1 push 5 push 3 pop push 5 push 7 pop 스택은 다음과 같은 순서로 데이터를 관리한다. 구현 기본적으로 스택은 배열을 이용하며, 배열을 어떻게 이용하는가에 대한 방식을 설명한다고 볼 수 있다. 다음은 C++에서 스택을 구현한 클래스 코드이다. 더보..