1. 문자셋의 종류
- SBCS(Single-Byte Character Set) : 1바이트 문자 표시
1바이트중 7비트 이용해서 ASCII코드(알파벳,숫자,특수문자)
남은 1비트를 이용해서 확장, but 한글,일어,한자 등은 표시 불가능
- MBCS(Multi-Byte Character Set) : 1바이트 이상으로 문자표시
:1바이트문자는 1바이트로, 2바이트이상 문자는 여러바이트 이용해서 표시
:영문 1바이트, 한글 2바이트
- WBCS(Wide-Byte Character Set) : 유니코드(UNICODE)
: 1바이트로 충분한 알파벳도 2바이트로 표현
: 영문 2바이트, 한글 2바이트
: MBCS의 문제점 해결
2.
TCHAR
- MBCS, 유니코드 여부에 따라 자동으로 자료형 변경
MBCS :
char
*
유니코드 :
wchar_t
3. L 표시자 : 유니코드로 나타내기
L
"abc"
: abc를 유니코드로 표시
_T(
"가나다라"
) : 유니코드에서는 L을 붙이고 그렇지 않으면 붙이지 않는 매크로
4.
LPSTR
/
LPCSTR
/
LPWSTR
/
LPCWSTR
/
LPTSTR
/
LPCTSTR
LP : Long Pointer - 과거 16bit 포인터 보다 큰 메모리
.Net 이상은 64bit pointer, VC++6.0과 이전버전은 32bit pointer
STR : String -
char
형(
wchar_t
) 배열로 마지막에 NULL값(종료값, /0)을 가진 형태
C : constant - 상수 : 값을 변경하지 못함
W : Wide
char
- WSTR ->
wchar_t
즉, 유니코드 문자열
T : Transpose(치환) = 개발환경에 따라 MBCS 환경 ->
char
, 유니코드 환경 ->
wchar_t
로 치환
■ MBCS
LPSTR
=
long
pointer string =
char
*
//1바이트
LPCSTR
=
long
pointer constant string =
const
char
*
■ 유니코드
LPWSTR
=
long
pointer wide string = w_char *
//2바이트
LPCWSTR
=
long
pointer constant wide string =
const
w_char *
■ MBCS & 유니코드
LPTSTR
=
long
pointer t_string = tchar * =
TCHAR
*
//1 or 2바이트
LPCTSTR
=
long
pointer constant t_string =
const
tchar * =
TCHAR
*
char
: 1바이트
"~~~"
로 사용
w_char : 2바이트 L
"~~~"
로 사용
tchar : 1 or 2바이트 _T
"~~~"
로 사용
-------------------
Windows.h
-------------------
typedef
char
CHAR
;
typedef
wchar_t
WCHAR
;
typedef
CHAR
*
LPSTR
;
typedef
CONST
CHAR
*
LPCSTR
;
typedef
WCHAR
*
LPWSTR
;
typedwf CONST
WCHAR
*
LPCWSTR
;
#ifdef UNICODE
typedef
WCHAR
TCHAR
;
typedef
LPWSTR
LPSTR
;
typedef
LPCWSTR
LPCTSTR
;
#else
typedef
CHAR
TCHAR
;
typedef
LPSTR
LPTSTR
;
typedef
LPCSTR
LPCTSTR
;
#endif
-------------------
응용
-------------------
LRESULT
CALLBACK WndProc(
HWND
,
UINT
,
WPARAM
,
LPARAM
)
LRESULT
=
long
(4바이트)
CALLBACK = 프로시져 결과값 반환하는 호출규약
HWND
= 윈도우 핸들, 윈도우 안의 창과 버튼을 조작하기 위해 만든 구분 값
UINT
UINT
= unsigned integer (4바이트)
WPARAM
= Word Parameter = 주로 핸들이나 정수 값 : 자주 쓰이는 정보 (64비트)
LPARAM
= Long Parameter = 주로 포인터값 : 추가정보 (64비트)
typedef
UINT_PTR
wparam
typedef
_W64 unsigned
int
UINT_PTR
#define _W64 __W64
The __w64 modifier should be specified on any typedefs that change size between 32 bit and 64 bit platforms. For any such type, __w64 should appear only on the 32-bit definition of the
typedef
;
UINT
;
LPCSTR
;
LRESULT
;
HRESULT
;
HWND
;
WPARAM
;
LPARAM
; REFIID
;
void
-------------------------
CONVERT TO AUTOHOTKEY
HWND Ptr
HANDLE UInt or Ptr
HMODULE Ptr
DWORD UInt
HCURSOR Ptr
LPCTSTR Str
LPDWORD UInt* or Ptr
LPCVOID Ptr
LPTSTR Ptr
BOOL UInt 4
LONG Int 4
PLARGE_INTEGER Int64*
PULONGLONG UInt64*
ULONGLONG Int64
LPCWSTR WStr
LPWSTR WStr
int Int
LCID UInt
BOOLEAN UChar
LARGE_INTEGER * Int64*
DWORDLONG UInt64 8
SIZE_T Ptr A_PtrSize = 8 ? 8 : 4
'프로그래밍 > ETC...' 카테고리의 다른 글
[Eclipse] 이클립스 WAS 전환 (0) | 2022.04.07 |
---|---|
이클립스 정렬 (0) | 2022.03.03 |
[Eclipse] 이클립스 설정 (0) | 2018.08.03 |
HTTP 서버 응답 코드 (Response Code) 정리 (0) | 2018.07.27 |
IaaS, PaaS, SaaS란 (0) | 2018.05.23 |