WinAPI 27

함수 선언 뒤에 const 키워드

class A { public: int m_Number; public: void Func() { m_Number; } public: A(int _Number) : m_Number(_Number) { } }; 위의 코드에서 Func 함수의 m_Number에는 this가 생략되어 있다.사실 this->m_Number이며 this는 A* const 이다. 그렇기 때문에 this = nullptr; 이 코드는 불가능. 복습) int* const Ptr = nullptr; Ptr = nullptr // 불가능 포인터가 가리키는 주소값이 const가 된다. void Func() const { } 이렇게 함수 선언 뒤에 const를 붙이면 여기서의 this는 const A* const가 된다. 즉 가리키는 주소와 실..

WinAPI 2021.01.14

복습) 지역 변수

지역 변수는 지역이 끝날때 사라진다. int* Test() { int A = 100; return &A; } int main() { int* b = Test(); } 위의 코드는 문법적으로 문제도 없고 실행해서 값을 확인해보면 b의 변수에는 100의 값이 들어가 있다. 그렇지만 이는 치명적으로 잘못 생각하고 있는 경우이다. 메모리로 보면 이런 상황이 된다. 즉 값이 100으로 들어 올수도 있지만 어떤 값이 들어올지 모르고 이상한 값이 들어와도 전혀 이상할게 없는 경우이다. 안전하게 처리하려면 새로운 메모리를 만들어 내서 리턴해주면 된다.

WinAPI 2021.01.14

문자열의 처리방법(와이드 바이트, 멀티 바이트)

문자열의 처리방법에는 2가지가 있다. 와이드 바이트와 멀티 바이트. 멀티 바이트 : 아스키 코드에 해당하는 문자는 1바이트 한글이나 특수기호는 2바이트로 처리 와이드 바이트 : 모든 문자를 2바이트로 처리 c++ 에서는 2가지 문자열의 차이를 표현하기 위해서 wchar_t 와 char 자료형이 있다. char의 표현 방법은 "" 으로 멀티 바이트 wctar_t의 표현 방법은 L""으로 와이드 바이트

WinAPI 2021.01.14

폴더 경로, #include "",<> 의미

폴더경로를 나타낼때 . 의 의미는 자기 자신을 나타내는 의미이다. 최상위 폴더인 드라이브 폴더를 제외하고는 자신을 가지고 있는 부모(상위)폴더를 가지고 있다. .. 의 의미는 자기의 상위폴더를 의미한다. #include 문법에서 : 비주얼 스튜디오의 포함디렉터리에 넣어준 내용들은 를 사용해서 포함시킨다. "" : 같은 프로젝트나 폴더내부에 있는 헤더는 ""을 사용해서 포함시킨다. 경로 설정은 프로젝트 -> 속성 -> VC++ 디렉터리 -> 포함 디렉터리 에서 가능하다.

WinAPI 2021.01.12

Main Parameter

#include int main() { std::cout 일반 에 보면 출력 디렉터리가 있다. 보면은 $(SolutionDir)$(Configuration)\ 이렇게 설정이 되어있는데 (SolutionDir)는 프로젝트가 있는 폴더까지의 경로를 매크로로 치환해둔것이다. 저걸 다 지우고 자신이 원하는 이름을 적으면 프로젝트를 기준으로 거기에 자신이 적은 이름으로 폴더가 생기고 거기에 파일들이 생성된다. #include int main(int _Count, char** _Data) { std::cout

WinAPI 2021.01.08

API 기본구조 살펴보기 1 , 복습

Windows 데스크톱 애플리케이션으로 프로젝트를 생성하면 기본적으로 제공되어 생성되어있는 코드들이 있다. F5로 실행해보면 윈도우창 하나가 뜬다. 기본적으로 마이크로소프에서 윈도우에서 C++ 프로그램을 만들기위한 윈도우창 하나를 만들어준거라고 볼 수 있다. 그러면 마이크로소프에서 프로그래머를 위해 어떤거를 제공했는지를 파악해보자. 기본적으로 디버깅(F10 실행)을 해보면서 시작부터 차근차근 하나씩 알아볼 수 있다. #define MAX_LOADSTRING 100 // 전역 변수: HINSTANCE hInst; // 현재 인스턴스입니다. WCHAR szTitle[MAX_LOADSTRING]; // 제목 표시줄 텍스트입니다. WCHAR szWindowClass[MAX_LOADSTRING]; // 기본 창 ..

WinAPI 2021.01.08