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 pointerSTR : String - char형(wchar_t) 배열로 마지막에 NULL값(종료값, /0)을 가진 형태C : constant - 상수 : 값을 변경하지 못함W : Wide char - WSTR -> wchar_t 즉, 유니코드 문자열T : Transpose(치환) = 개발환경에 따라 MBCS 환경 -> char, 유니코드 환경 -> wchar_t로 치환■ MBCSLPSTR = 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 = 윈도우 핸들, 윈도우 안의 창과 버튼을 조작하기 위해 만든 구분 값UINTUINT = unsigned integer (4바이트)WPARAM = Word Parameter = 주로 핸들이나 정수 값 : 자주 쓰이는 정보 (64비트)LPARAM = Long Parameter = 주로 포인터값 : 추가정보 (64비트)typedef UINT_PTR wparamtypedef _W64 unsigned int UINT_PTR#define _W64 __W64The __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 |