본문 바로가기

전체 글96

[WinAPI] 윈도우 크기 지정 클라이언트 영역 실제 컨텐츠가 동작하는 범위를 가리킨다. SetWindowPos() HWND hwnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags 위의 매개변수를 가지고 있으며 보통 SetWindowPos()를 이용해서 윈도우의 위치와 화면의 크기를 변환시킨다. cx, cy값으로 1280, 720을 줬을 경우 비 클라이언트 영역의 크기까지 합쳐서 크기를 변환시킨다. AdjustWindowRect() LPRECT lpRect, DWORD dwStyle, BOOL bMenu 위의 매개변수를 가지며 AdjustWindowRect()를 호출하면 첫번째 매개변수로 주어진 화면의 크기만큼 클라이언트 영역이 될 수 있는 크기를 받아 올 수 있다... 2022. 11. 15.
[C++] 미리 컴파일된 헤더 미리 컴파일된 헤더 헤더를 미리 컴파일 해 두는 것 자주 변경되지 않는 긴 소스를 미리 컴파일 하여 컴파일 시간 단축 가능 미리 컴파일 시킨 다음 파일에 저장해서 소스가 변경되지 않는다면 저장시킨거 가져와서 쓰게 된다. windows.h나 iostream과 같은 것들을 주로 사용 사용법 프로젝트 속성 - C/C++ 미리 컴파일된 헤더 - 만들기 프로젝트 속성 - C/C++ 미리 컴파일된 헤더 파일 - stdafx.h 혹은 pch.h 입력한 헤더 파일의 이름대로 stdafx.h 혹은 pch.h 파일을 생성한 다음 미리 컴파일을 하고 싶은 파일을 include시켜 사용하면 된다. 사용되는 cpp 파일에 #include "pch.h"를 선언하고 사용하면 된다. 만일 사용하는 cpp에 미리 컴파일된 헤더를 선언.. 2022. 11. 14.
[C++] 멀티바이트, 유니코드 아스키코드 항상 1바이트, 영어 이외의 프랑스, 스페인, 등등 영어와 비슷한 언어만 확장형으로 사용 나머지는 사용 불가 유니코드 항상 문자 하나에 2바이트 공간 확보 utf-8, utf-16, utf-32로 나눠진다. 각 숫자는 비트를 뜻하고 앞에서부터 차례대로 1byte, 2byte, 3byte 사용한다는 뜻 그런 의미로 1바이트라서 utf-8은 한글 사용 불가, 멀티바이트 한 문자에 할당되는 공간이 일정하지 않음, 영어 : 1바이트, 다국어 : 2바이트 영어 이외의 언어를 사용 wchar은 2바이트, char은 1바이트 TEXT()매크로는 TCHAR과 마찬가지로 들어온 문자열을 설정한 유니코드나 멀티바이트에 맞게 매크로 해줌 TCHAR 사용하면 유니코드 일땐 wchar_t 사용, 그 외엔 char 사.. 2022. 11. 14.
[C++] wstring wstring 여러 나라의 언어를 표현하기 위해 사용하는 전용 string이다. 한 문자를 표현하기 위해서 1byte가 아닌 2,3 그 이상의 byte를 사용하기 때문에 생기는 문제점을 해결하기 위해 사용한다. 예를들면 "홍길동" 을 입력받기 위해 char[3]을 만들면 "ㅎㅗㅇ" 한글자 밖에 받지 못한다. 출력할 때도 마찬가지다 홍을 표현하기 위해 0~2까지 출력해야한다. 이러한 이유로 윈도우 프로그래밍도 w__ 자료형을 쓴다. wstring 외에도 wchar_t 등등과 전용 메소드가 있으니 찾아보길 바란다. 프로젝트의 속성에 문자 집합이 기본은 "유니코드 문자 집합"으로 되어있다. 본인은 wstring이나 그런거 쓰기 싫다 하시는 사람은 "멀티바이트 문자 집합" 으로 바꾸고 string 사용하면 되겠.. 2022. 11. 14.
[Algorithm] 에라토스테네스의 체 에라토스테네스의 접근 주어진 자연수 N이 소수이기 위한 필요충분 조건은 N이 N의 제곱근보다 크지 않은 어떤 소수로도 나눠지지 않는다. 소수가 되는 N이 자연수라면 sqrt(N)보다 작은 수로 나눠지지 않음 1, 2, 4, 5, 8, 10, 16, 20, 40, 80 자연수 N : 80, sqrt(80) : 8.xxxx, 2부터 8.xxxx이하만 검색하면 이후의 값은 검사할 필요가 없음 1-80, 2-40, 4-20, 5-16, 8-10이기 때문에 8.xx이하만 검사하면 됨 bool IsPrime(int num) { for (int i = 2; i * i 2022. 11. 14.
[WinAPI] 그리기 좌표 좌표를 기준으로 그리게 됨 좌표 x,y 좌표에서의 1은 1픽셀을 의미한다. case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // 렌더링 관련 핸들 받아옴 // DC가 그릴 장소 : hWnd // DC의 기본 펜 색상 : 검정색 // DC의 기본 브러쉬 색상 : 흰색 HPEN hRedPen = CreatePen(PS_SOLID, 1, RGB(225, 0, 0)); // 빨간펜 생성 HBRUSH hGrayBrush = (HBRUSH)GetStockObject(GRAY_BRUSH); // 시스템 제공 회색브러쉬 받아옴 HPEN hDefaultPen = (HPEN)SelectObject(hdc, hRedPen); // 빨간펜 장착, 기존.. 2022. 11. 13.