Windows8의 내부 버전

C, C++ 2013.02.01 12:31

GetVersionEx함수로 윈도우의 내부 버전을 가져오게 되는데


윈도우즈8 같은 경우에는

OSVERSIONINFO구조체의 dwPlatformId는 VER_PLATFORM_WIN32_NT 이고

dwMajorVersion은 6

dwMinorVersion은 2 가 된다.


(침고로 윈도우즈7은 dwMajorVersion은 6, dwMinorVersion은 1 이다)

'C, C++' 카테고리의 다른 글

_tcslwr, _tcsupr  (0) 2013.02.01
Windows7이 이전 윈도우에 비해 빠른이유  (0) 2013.02.01
Windows8의 내부 버전  (0) 2013.02.01
fopen, _wfopen, _tfopen  (0) 2013.01.31
GetMessage, PeekMessage  (0) 2013.01.31
_tWinMain  (0) 2013.01.31

설정

트랙백

댓글

fopen, _wfopen, _tfopen

C, C++ 2013.01.31 18:04

그렇다..


fopen함수도 T매크로가 있다..


멀티바이트에선 fopen, 유니코드에선 _wfopen이 쓰이지만

_tfopen으로 둘다 사용가능하다..


나만 몰랐나..?;;

뭐.. 맨날 멀티바이트로 만들다 보니 신경쓸일이 없었다..


그러하다..

'C, C++' 카테고리의 다른 글

Windows7이 이전 윈도우에 비해 빠른이유  (0) 2013.02.01
Windows8의 내부 버전  (0) 2013.02.01
fopen, _wfopen, _tfopen  (0) 2013.01.31
GetMessage, PeekMessage  (0) 2013.01.31
_tWinMain  (0) 2013.01.31
WideCharToMultiByte  (0) 2013.01.31

설정

트랙백

댓글

GetMessage, PeekMessage

C, C++ 2013.01.31 17:31

GetMessage, PeekMessage 둘의 가장 큰차이점은 '대기'가 아닐까 한다..


거의 모든 경우에서 while문과 같이쓰게되는데


GetMessage는 함수내부에서 메세지가 올때까지 대기하는 반면에


PeekMessage는 그렇지 않기때문에 어마어마한 속도로 while문을 돈다-_-;;


따라서 아무것도 하지 않아도 CPU사용률을 몇%~ 몇십%까지 먹게된다..


그렇다고 while문안에 Sleep()을 넣으면 상당히 많은양의 메세지가 왔다갔다 하는 윈도우 시스템 특성상


상당히 버벅거리며 처리되는걸 느낄수있다. 물론 성능 좋은 PC에선 티가 나지 않는경우도 많은데


그렇지 못한 경우엔 간단한 몇가지의 동작도 몇초씩 걸리게 된다..


필요한 작업이 있다면 GetMessage와 유저메세지를 쓰자..

'C, C++' 카테고리의 다른 글

Windows8의 내부 버전  (0) 2013.02.01
fopen, _wfopen, _tfopen  (0) 2013.01.31
GetMessage, PeekMessage  (0) 2013.01.31
_tWinMain  (0) 2013.01.31
WideCharToMultiByte  (0) 2013.01.31
MultibyteToWideChar  (0) 2013.01.31

설정

트랙백

댓글

_tWinMain

C, C++ 2013.01.31 17:18

WinMain함수도 T매크로가 있다

가끔 프로젝트가 변경의 변경을 거듭하다보면 멀티바이트 문자셋 사용에서 유니코드 문자셋 사용으로 넘어갈때 인가..

(지금해보니 문자셋 변경에선 나타나지않는데.. 분명 오류가 날때가 있었는데..? 자세한건 오래되서 기억이 잘..ㅎㅎ;)


암튼 WinMain관련해서 심볼 에러가 뜨면


WinMain(생략)함수를 _tWinMain(생략)으로 바꿔 주면 해결할 수가 있다.

'C, C++' 카테고리의 다른 글

Windows8의 내부 버전  (0) 2013.02.01
fopen, _wfopen, _tfopen  (0) 2013.01.31
GetMessage, PeekMessage  (0) 2013.01.31
_tWinMain  (0) 2013.01.31
WideCharToMultiByte  (0) 2013.01.31
MultibyteToWideChar  (0) 2013.01.31

설정

트랙백

댓글

WideCharToMultiByte

C, C++ 2013.01.31 15:38

유니코드 문자열 -> 멀티바이트 문자열로 변환해주는 함수.


원형:

int WideCharToMultiByte(

  _In_       UINT CodePage,

  _In_       DWORD dwFlags,

  _In_       LPCWSTR lpWideCharStr,

  _In_       int cchWideChar,

  _Out_opt_  LPSTR lpMultiByteStr,

  _In_       int cbMultiByte,

  _In_opt_   LPCSTR lpDefaultChar,

  _Out_opt_  LPBOOL lpUsedDefaultChar

);


파라미터:

CodePage - 역시나 CP_ACP를 거의 쓰게 되지만. CP_UTF8등도 있다.

dwFlags - 이것도 거의 0을 쓰면된다.

lpWideCharStr - 변환할 문자열

cchWideChar - 변환할 문자열의 길이. 보통 -1 을 많이쓰고 -1은 해당 문자열 전체를 지정하게된다.

lpMultiByteStr - 변환된 문자열을 받을 버퍼 포인터

cbMultiByte - 출력 대상의 길이. 0을 쓰면 출력은 되지않고 필요한 버퍼 크기를 반환한다.

lpDefaultChar - 주로 NULL을 쓰면된다.

lpUsedDefaultChar - 주로 NULL을 쓰면된다.


리턴값:

변환된 문자의 수를 반환. cbMultiByte 파라미터가 0 일땐 필요한 버퍼 크기를 반환

0 - 실패(GetLastError()로 에러 확인가능)


사용예:

WCHAR wcharWidechar[256] = {"abcdef"};

char charBuffer[256];

WideCharToMultiByte( CP_ACP, 0, wcharWidechar, -1, charBuffer, 256, NULL, NULL );


그리고 cbMultiByte 파라미터에 0을 넣어서, 리턴되는 필요한 버퍼 크기를 이용해서 동적생성에 써먹을수도 있다.

'C, C++' 카테고리의 다른 글

Windows8의 내부 버전  (0) 2013.02.01
fopen, _wfopen, _tfopen  (0) 2013.01.31
GetMessage, PeekMessage  (0) 2013.01.31
_tWinMain  (0) 2013.01.31
WideCharToMultiByte  (0) 2013.01.31
MultibyteToWideChar  (0) 2013.01.31

설정

트랙백

댓글

MultibyteToWideChar

C, C++ 2013.01.31 15:16

멀티바이트 문자열 -> 유니코드 문자열로 변환해주는 함수.

가끔씩 쓰다보니 자주 까먹는 함수중에 하나 


원형:

int MultiByteToWideChar(

  _In_       UINT CodePage,

  _In_       DWORD dwFlags,

  _In_       LPCSTR lpMultiByteStr,

  _In_       int cbMultiByte,

  _Out_opt_  LPWSTR lpWideCharStr,

  _In_       int cchWideChar 

);


파라미터:

CodePage - 거의 CP_ACP를 사용하면 된다 ㅎ

dwFlags - 요것도 거의 NULL을 사용하면 된다.

lpMultiByteStr - 변환할 문자열

cbMultiByte - 변환할 문자열의 길이. 보통 -1 을 많이쓰고 -1은 해당 문자열 전체를 지정하게된다.

lpWideCharStr - 변환된 문자열을 받을 버퍼 포인터

cchWideChar - 출력 대상의 길이. 0을 쓰면 출력은 되지않고 필요한 버퍼 크기를 반환한다.


리턴값:

변환된 문자의 수를 반환. cchWideChar파라미터가 0 일땐 필요한 버퍼 크기를 반환

0 - 실패(GetLastError()로 에러 확인가능)


사용예:

char charMuitiByte[256] = {"abcdef"};

WCHAR wcharBuffer[256];

MultiByteToWideChar( CP_ACP, 0, charMulitByte, -1, wcharBuffer, 256 );


그리고 cchWideChar파라미터에 0을 넣어서, 리턴되는 필요한 버퍼 크기를 이용해서 동적생성에 써먹을수도 있다.

'C, C++' 카테고리의 다른 글

Windows8의 내부 버전  (0) 2013.02.01
fopen, _wfopen, _tfopen  (0) 2013.01.31
GetMessage, PeekMessage  (0) 2013.01.31
_tWinMain  (0) 2013.01.31
WideCharToMultiByte  (0) 2013.01.31
MultibyteToWideChar  (0) 2013.01.31

설정

트랙백

댓글