공부/WINAPI 6

인코딩 변환 함수(MultiByteToWideChar(), WideCharToMultiByte())

출처에 표시해놓은 블로그에서 유니코드멀티바이트 변환 함수를 잘 정리해놓아서 출처를 밝히고 여기 옮긴다. MultiByteToWideChar()함수와 WideCharToMuliByte()함수를 사용해서 인코딩을 변환해 주는 것도 가능합니다. 이 두함수는 윈도우에서만 지원합니다. 따라서 OS 디펜던시가 없는 라이브러라 같은 것을 개발하신다면 이 두함수는 사용하실 수 없긴 하지만 많은 윈도우 개발자들이 사랑하는 함수죠. 먼저 MBCS를 UTF-16으로 바꾸는 함수입니다. int MultiByteToWideChar( UINT CodePage, // 원본 스트링의 현재 인코딩 상태 DWORD dwFlags, // 0을 쓰면 된다. LPCSTR lpMultiByteStr, // 변환하려는 문자열 int cbMult..

공부/WINAPI 2021.12.10

멀티 바이트/유니코드 문자열 만들어주기(sprintf_s, wsprintf)

실수 타입은 유니코드 문자열로 만들 수 없으므로 멀티 바이트 문자열로 만들어줘야 하는데 그때 사용할 수 있는 함수가 sprintf_s 함수이다. 오버로드된 다른 형태도 있다. 나의 경우 이렇게 사용해줬다. char FPSText[32] = {}; // 2번째 인자를 멀티 바이트 문자열 형태로 1번째 인자에 저장해준다 // GetFPS() 함수는 float타입을 리턴하는 함수 sprintf_s(FPSText, "FPS : %.5f", m_Timer->GetFPS()); 다른 타입들(ex. 정수형) 들은 wsprintf 함수로 유니코드 문자열로 만들어줄 수 있다. TCHARBulletCountText[32] = {}; // 두번째 인자로 첫번째 인자에 유니코드 문자열을 만들어주는 함수 wsprintf(Bul..

공부/WINAPI 2021.08.20

WINAPI 시작을 위한 필수 함수들

int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) 콘솔 프로그램에서 main처럼 WINAPI에서의 main(진입점)이라고 보면 된다. 여기서 APIENTRY는 __stdcall 함수 호출규약을 의미하는데 #define으로 정의되어 있다. #define CALLBACK __stdcall #define WINAPI __stdcall #define WINAPIV __cdecl #define APIENTRY WINAPI #define APIPRIVATE __stdcall #define PASCAL __stdcall WINAPI, APIENTR..

공부/WINAPI 2021.08.03

WINAPI 시작하기 - 초기 세팅

visual studio 2019에서 새 프로젝트 만들기 > windows 데스크톱 마법사 > 데스크톱 어플리케이션 & 빈 프로젝트로 생성 후 솔루션 하위에 있는 프로젝트 제거 > 프로젝트 파일이 존재하는 경로로 가서 Bin, include 폴더 생성 > 원래 존재하던 프로젝트 파일을 include에 모두 넣어주기 이렇게 하는 이유는 프로그래밍할 때 생기는 코드들은 모두 include에 넣어서 관리하고 결과적으로 만들어지는 실행파일들은 Bin폴더에 따로 보관하기 위해서 이렇게 세팅해준다. 그 후에 솔루션 우클릭 > 추가 > 기존 프로젝트 > 아까 include에 넣어준 프로젝트 열기 그리고 실행파일이 만들어지는 위치를 우리가 아까 만든 Bin폴더 안으로 설정해야 한다(기존에는 솔루션 명의 폴더 안에 De..

공부/WINAPI 2021.08.02