안녕하세요, whoami입니다.
20080726 에서의 변경점은 옵션에 한글이 들어올 때의 문제점 수정밖에 없습니다.
Util 모듈하고 tstring 모듈만 변경되었습니다.
관리자님이 올려주신 플러그인 소스는 유용하긴 한데 처음부터 만들려면 막막해지죠. 그래서
플러그인 개발하기 위해 플러그인 사양에 맞게 처음부터 만들 필요가 없게 기본바탕이 되는 프레임을
구성해보았습니다. 이 상태에서 ATPlugin.h 의 define 부분만 바꿔서 그대로 컴파일해도 작동되는
플러그인을 만들 수 있습니다 (단, 아무일도 하지 않습니다.. 당연하겠지만서도;)
이 소스는 Public Domain, 곧 저작권 없는 소스입니다. 프레임워크이니까 당연하겠죠? ^^
다운로드는.. ATPluginFrame_20080810.zip
아래는 ReadMe.txt 의 내용입니다.
-----------------------------------------------------------------------------------------------------------------
아랄 트랜스 플러그인 개발 프레임워크 20080810 for AralTrans 0.2.20080704
* 파일 설명
ATPlugin.h - 아랄트랜스 플러그인 규격에 맞는 익스포트 정보.
ATPlugin.cpp - 아랄트랜스 플러그인이 제공해야 하는 실제 함수 모음
DefATContainer.h - 아랄트랜스 컨테이너가 제공하는 함수의 원형 (ATCode 플러그인에서 슬쩍 ^^)
ATCApi.h / ATCApi.cpp - 아랄트랜스 컨테이너 제공 함수를 사용하기 쉽게 Wrapping한 클래스
tstring.h / tstring.cpp - 유니코드용 변환 함수 및 string 지원 모듈
Util.h / Util.cpp - 플러그인 제작시 유용한 유틸리티 함수 모음
resource.h / ATPlugin.rc - 플러그인 버전 표시 리소스
ATPlugin.dsw / ATPlugin.dsp - Visual C++ 6.0 용 프로젝트 파일
* 후킹 플러그인을 만들 때
ATPlugin.h 의 #define ATPLUGIN_HOOKER 를 주석 해제하시고 개발하세요.
* 번역 플러그인을 만들 때
ATPlugin.h 의 #define ATPLUGIN_TRANSLATOR 를 주석 해제하시고 개발하세요.
* 필터 플러그인을 만들 때
ATPlugin.h 의 #define ATPLUGIN_FILTER 를 주석 해제하시고 개발하세요.
* ATPLUGIN_VERSION 과 OnPluginVersion()
0.2.20080518 공식 플러그인 규격은 아니지만 이후 플러그인 사양이 변했을 때 아랄트랜스
제작자께서 참조 가능하도록 추가했습니다;
(20080726 추가 - AralUpdater 가 플러그인의 버전 정보 리소스를 기본으로 업데이트한다는 것을
알아냈으므로 OnPluginVersion()은 필요없을 것 같습니다만.. 일단 남겨둡니다.
추가로.. 기본적으로 플러그인의 버전 정보 리소스를 추가하도록 ATPlugin.rc 를 동봉하였으니
이 파일의 버전 리소스를 고쳐 사용하도록 하시기 바랍니다)
* ATCApi 사용하기 위한 준비
1. ATCApi.h 를 include 하면 전역 객체로 g_cATCApi가 잡힙니다.
2. g_cATCApi의 IsValid() 가 TRUE 이면 사용 가능.
* 유니코드 기반 프로젝트를 만들 때
Visual C++ 6.0 설정의 컴파일러 옵션 define 중 _MBCS 를 지우고 UNICODE, _UNICODE 를 대신 넣으면 됩니다.
동봉된 프로젝트 파일에는 유니코드용/MBCS용의 설정이 둘 다 있습니다.
다른 버전의 컴파일러 사용시에는 각 버전의 유니코드 설정 방법을 참고하세요.
* tstring 모듈의 함수 간단 설명
tstring - 유니코드 설정에 따라 string 혹은 wstring 으로 동작합니다.
tstring MakeTString(const char *pszString) - char 형식의 문자열을 tstring 으로 바꿔줍니다.
TCHAR MakeTChar(const char ch) - char 형식의 문자를 TCHAR 로 바꿔줍니다.. 실제로는 필요없을지도;
MyWideCharToMultiByte() - WideCharToMultiByte 대용 함수입니다. 어플로케일때문에 이렇게 사용해야 한다고..
MyMultiByteToWideChar() - MyMultiByteToWideChar 대용 함수입니다. 어플로케일때문에 이렇게 사용해야 한다고..
Kor2Wide(LPCSTR lpKor, LPWSTR lpWide, int nWideSize) - 한글일 경우 MyMultiByteToWideChar를 쉽게 쓰기 위한 간략함수입니다.
Wide2Kor(LPCWSTR lpWide, LPSTR lpKor, int nKorSize) - 한글일 경우 MyWideCharToMultiByte를 쉽게 쓰기 위한 간략함수입니다.
* Util 함수 간단 설명
const char *GetATDirectory()
- 아랄트랜스 설치 디렉토리를 알아온다.
void GetATOptionsFromOptionString(const char *pszOption, ATOPTION_ARRAY &aOptions)
- 간단한 옵션 파서. 옵션은 key1(value1),key2(value2) 형식 혹은 key1,key2 도 가능.
void GetOptionStringFromATOptions(const ATOPTION_ARRAY &aOptions, char *pszOption, int nMaxOptionLength)
- 위의 옵션 파서와 반대로 옵션 모음을 옵션 문자열로 바꿔주는 함수.