본문 바로가기

프로그래밍/C++

ID3DXSprite Flush() Function ID3DXSprite 의 Flush 함수의 정의는 다음과 같다. Flush Forces all batched sprites to be submitted to the device. Device states remain as they were after the last call to ID3DXSprite::Begin. The list of batched sprites is then cleared. 모아둔 스프라이트 이미지들을 장치로 제출한다는 의미인데, 이것만 보면 도대체 무슨 소리인지 모른다; 예시를 보면 이해가 쉽다. ID3DXSprite ->Flush(); m_pd3dd->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE); m_pd3dd->SetRenderState(D3D.. 더보기
WideCharToMultiByte - 유니코드를 멀티바이트로 int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, _In_NLS_string_(cchWideChar)LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar ); https://docs.microsoft.com/en-us/windows/desktop/api/stringapiset/nf-stringapiset-widechartomultibyte 유니코드를 멀티바이트로 변경하는 함수이다.외국어를 출력할 경우, 자주 사용하게 되는 Function 이다. 보통 첫번째 인자로 CP_ACP 를 사용하면 무.. 더보기
멀티바이트, 유티코드 그리고 TCHAR Type Size Support end of string ----------------------------------------------------------------------- SBCS 1byte win9X, NT \0 ----------------------------------------------------------------------- MBCS 1byte(영문), 2byte(한글) winNT \0 ----------------------------------------------------------------------- UNICODE 2byte winNT,CE \0\0 ---------------------------------------------------------------.. 더보기
VisualStudio - usersuppliedvalue error 옵션-일반설정에서 대상 플랫폼 버전(Target Platform Version) 은 vs2015이전에는 없던 설정이다.만약 이전버전에서 마이그레이션 했다면, 에러가 발생.vs2015인 8.1을 적어주면 된다. 대상플랫폼은 생략해도 에러가 나지 않았음. 참조http://bestdev78.tistory.com/530 더보기
[link] C++ Unit Test - VisualStudio Visual Studio에서는 C++로 작성된 관리되지 않는 코드에 대한 단위 테스트를 만들 수 있습니다. 관리되지 않는 코드는 네이티브 코드라고도 합니다.다음 절차에는 시작하는 도움이 되는 중요한 정보가 포함되어 있습니다. 이후 섹션에서는 각 단계를 자세히 설명하는 연습이 제공됩니다.관리되지 않는 코드 DLL에 대한 단위 테스트를 작성하려면기본 테스트 프로젝트 템플릿을 사용해서 테스트를 위한 개별 Visual Studio 프로젝트를 만듭니다.프로젝트에는 일부 샘플 테스트 코드가 포함됩니다.DLL을 테스트 프로젝트에 액세스할 수 있도록 합니다.DLL의 외부 액세스 가능한 함수에 대한 선언이 포함된 #include 파일을 .h합니다..h 파일에는 _declspec(dllimport)로 표시된 함수 선언이 .. 더보기
C++17 string_view https://skebanga.github.io/string-view/#include #include void* operator new(std::size_t n) { std::cout 더보기
GetLastError() 리턴값을 문자열로 출력 - FormatMessage 윈도우즈 시스템에서 에러를 체크해주는 GetLastError() 아쉽지만, 리턴값이 DWORD 이다. 물론, 테이블을 확인해서 어떤 에러인지 확인할 수 있지만( http://honestgame.tistory.com/120 ) 매번 확인하는게 귀찮을때 문자열로 변환하여 볼 수 있다. OS에서 Message Dll로 테이블을 관리하고 있는데, FormatMessage()를 이용하면 된다. 함수원형은 다음과 같다. DWORD WINAPI FormatMessage( _In_ DWORD dwFlags, _In_opt_ LPCVOID lpSource, _In_ DWORD dwMessageId, _In_ DWORD dwLanguageId, _Out_ LPTSTR lpBuffer, _In_ DWORD nSize, _I.. 더보기
[링크] 최고의 C++ 강의 5개 http://www.bloter.net/archives/271078 아쉽지만, 한글자막은 없다. 더보기
자료구조 SearchTime - map,set,unordered_map map, set, multimap, multiset 은 일반적으로 binary tree로 구현되어 있다. (VS 컴파일러의 경우, Red Black Tree로 구현되어 있음) https://ko.wikipedia.org/wiki/%EB%A0%88%EB%93%9C-%EB%B8%94%EB%9E%99_%ED%8A%B8%EB%A6%AC 오른쪽, 왼쪽을 비교해가면서 'Key'를 찾아가는 구조이다. 이와 같은 구조는 O(log n) 의 시간이 소요된다. 반면, unordered_map 이나 unordered_set의 경우 (c++11 이상에서 사용가능), 해쉬테이블로 구현되어 있다. bucket이라는 일종의 슬롯형태에 데이터를 해쉬알고리즘에 나누어서 집어넣는 구조인데, 해쉬함수가 constant time이라고 가정.. 더보기
C++ 시스템 환경변수 읽어오기 시스템 환경변수를 코드상으로 불러들이는 방법은 몇가지가 있다. 그중 하나는 C라이브러리 함수 getenv() 를 사용하면 된다. 필요헤더: stdlib.h 형태: char *getenv(const char *name); 사용방법은 다음과 같다. 매우 simple#include #include int main() { printf( "TEMP1 = %sn", getenv( "TEMP1")); } 다음은 WINAPI함수 - GetEnvironmentVariable() 를 이용하면 된다. DWORD WINAPI GetEnvironmentVariable( _In_opt_ LPCTSTR lpName, _Out_opt_ LPTSTR lpBuffer, _In_ DWORD nSize ); lpName [in, optio.. 더보기