본문 바로가기

쓰기

안녕하세요, whoami입니다.

 

뭔가 라이브러리쪽에 더 추가시킬까 하고 궁리하다 보니 쓸데없이 날짜만 지나가서...

에이 모르겠다 나중에 생각나면 더 추가시키지 ㅡ_ㅡㅋ 하면서  이제야 올립니다.

더 추가시키고 싶으신 라이브러리가 있으면 알려주세요;

 

관리자님이 올려주신 플러그인 소스는 유용하긴 한데 처음부터 만들려면 막막해지죠. 그래서
플러그인 개발하기 위해 플러그인 사양에 맞게 처음부터 만들 필요가 없게 기본바탕이 되는 프레임을
구성해보았습니다. 이 상태에서 ATPlugin.h 의 define 부분만 바꿔서 그대로 컴파일해도 작동되는
플러그인을 만들 수 있습니다 (단, 아무일도 하지 않습니다.. 당연하겠지만서도;)

이 소스는 Public Domain, 곧 저작권 없는 소스입니다. 프레임워크이니까 당연하겠죠? ^^

다운로드는.. ATPluginFrame_20090918.zip

 

 

 

아래는 ReadMe.txt 의 내용입니다.

-----------------------------------------------------------------------------------------------------------------------

아랄 트랜스 플러그인 개발 프레임워크 20090918 for AralTrans 0.2.20081115

* 개요
 아랄트랜스 플러그인 개발 프레임워크는 아랄트랜스용 플러그인을 더 쉽게 개발하기 위해
 아랄트랜스의 플러그인 사양 및 편리한 몇몇 함수를 구현해 놓은 프레임워크입니다.

 이 소스는 Public Domain 이므로 누구나 자유롭게 사용할 수 있습니다.

* 파일 및 폴더 설명
/ - 프로젝트 폴더
 - StdAfx.h / StdAfx.cpp - 플러그인의 기본 세팅이 정의되어 있는 헤더
 - ATPlugin.h - 플러그인의 메인 클래스가 정의되어 있는 헤더
 - ATPlugin.cpp - 플러그인의 메인 클래스의 내용의 구현
 - resource.h / ATPlugin.rc - 플러그인 버전 및 기타 리소스 정의
 - ATPlugin.dsw / ATPlugin.dsp - Visual C++ 6.0 용 프로젝트 파일
 - ATPlugin.sln / ATPlugin.vcproj - Visual C++ 2005 용 프로젝트 파일
 / ATPluginFrame - 플러그인 프레임워크 폴더
  - ATPluginFrame.h - 아랄트랜스 플러그인 규격에 맞는 익스포트 정보 및 베이스 클래스가 정의된 헤더
  - ATPluginFrame.cpp - 아랄트랜스 플러그인이 제공해야 하는 실제 함수 구현
  / Libs - 플러그인 개발에 유용한 라이브러리 모음
   - DefATContainer.h - 아랄트랜스 컨테이너가 제공하는 함수의 원형 (ATCode 플러그인에서 슬쩍 ^^)
   - ATCApi.h / ATCApi.cpp - 아랄트랜스 컨테이너 제공 함수를 사용하기 쉽게 Wrapping한 클래스
   - tstring.h / tstring.cpp - 유니코드용 변환 함수 및 string 지원 모듈
   - ATOptionParser.h / ATOptionParser.cpp - 간단한 옵션 인식 파서
   - Util.h / Util.cpp - 플러그인 제작시 유용한 유틸리티 함수 모음

* 후킹 플러그인을 만들 때
 1. StdAfx.h 의 #define ATPLUGIN_HOOKER 를 주석 해제합니다.
 2. CATPluginApp 의 OnPluginStart() 와 OnPluginClose() 함수를 재정의하여 개발합니다.

* 번역 플러그인을 만들 때
 1. StdAfx.h 의 #define ATPLUGIN_TRANSLATOR 를 주석 해제합니다.
 2. CATPluginApp 의 Translate() 함수를 재정의하여 개발합니다.

* 필터 플러그인을 만들 때
 1. StdAfx.h 의 #define ATPLUGIN_FILTER 를 주석 해제합니다..
 2. CATPluginApp 의 PreTranslate() 와 PostTranslate() 함수를 재정의하여 개발합니다.

* MFC 를 사용하고자 할 때
 1. 프로젝트를 MFC 사용 - 정적 라이브러리에서 MFC 사용으로 맞춥니다.
 2. 프로젝트 옵션 혹은 StdAfx.h 에서 USE_MFC 를 define 후 개발합니다.

* 포함 라이브러리의 설명
 프레임워크에 포함된 라이브러리는 플러그인 제작에 반드시 필요한 것은 아니나 플러그인 제작시 비교적
 많이 사용하는 함수들을 개발자의 편의를 위해 미리 만들어 놓은 것입니다.

 모든 라이브러리의 소스 및 헤더 파일은 ATPluginFrame/Libs 에 들어있으며 각각의 역할은 다음과 같습니다.
 - ATCApi : 후킹 플러그인 개발 시 ATCTNR.dll 과 통신을 위한 모듈
 - tstring : 문자열 유니코드-MBCS 변환 함수 및 지원 모듈
 - ATOptionParser : 옵션 문자열을 옵션명-값 으로 변환 혹은 그 반대의 역할을 하는 모듈
 - Util : 기타 자잘한 도구 함수 모듈

* ATCApi 사용하기 위한 준비
 1. ATCApi.h 를 include 하면 전역 객체로 g_cATCApi가 잡힙니다.
 2. g_cATCApi의 IsValid() 가 TRUE 이면 사용 가능.

* 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를 쉽게 쓰기 위한 간략함수입니다.
 Jpn2Wide(LPCSTR lpJpn, LPWSTR lpWide, int nWideSize) - 일본어(Shift-JIS)일 경우 MyMultiByteToWideChar를 쉽게 쓰기 위한 간략함수입니다.
 Wide2Jpn(LPCWSTR lpWide, LPSTR lpJpn, int nJpnSize) - 일본어(Shift-JIS)일 경우 MyWideCharToMultiByte를 쉽게 쓰기 위한 간략함수입니다.

* ATOptionParser 모듈의 함수 간단 설명
 ATOPTION_PAIR : strKey, strValue 로 옵션명, 옵션값을 저장하는 구조체
 ATOPTION_ARRAY : 옵션들을 모아서 관리하는 vector 컬렉션
 void GetATOptionsFromOptionString(const char *pszOption, ATOPTION_ARRAY &aOptions)
 - 간단한 옵션 파서. 옵션은 key1(value1),key2(value2) 형식 혹은 key1,key2 도 가능.
 void GetOptionStringFromATOptions(const ATOPTION_ARRAY &aOptions, char *pszOption, int nMaxOptionLength)
 - 위의 옵션 파서와 반대로 옵션 모음을 옵션 문자열로 바꿔주는 함수.

* Util 함수 간단 설명
 int GetModuleDirectory(const TCHAR *szModuleName, TCHAR *pszDirectory, int nBufSize)
 - 어떤 모듈의 디렉토리명을 알아오는 함수. 리턴값은 pszDirectory 의 길이.
 int GetATDirectory(TCHAR *pszDirectory, int nBufSize)
 - 아랄트랜스 설치 디렉토리명을 알아오는 함수.
 int GetGameDirectory(TCHAR *pszDirectory, int nBufSize)
 - 게임 설치 디렉토리명을 알아오는 함수.
 DWORD atoh(const TCHAR szValue[])
 - 16진수 문자열 ("0xABCD") 을 DWORD 로 변환.

* 유니코드 기반 프로젝트를 만들 때
 Visual C++ 6.0 설정의 컴파일러 옵션 define 중 _MBCS 를 지우고 UNICODE, _UNICODE 를 대신 넣으면 됩니다.
 동봉된 프로젝트 파일에는 유니코드용/MBCS용의 설정이 둘 다 있습니다.
 다른 버전의 컴파일러 사용시에는 각 버전의 유니코드 설정 방법을 참고하세요.

* 변경 이력

* 20090918
- DefATContainer.h 와 ATCApi 가 AralTrans 0.2.20081115 에 맞게 변경되었습니다.
- ATPLUGIN_VERSION 과 OnPluginVersion() 은 삭제되었습니다.
- 프레임워크의 구조가 객체지향적으로 변경되었습니다.
- 폴더 구조가 변경되었습니다.
- ATOptionParser 가 독립되었습니다.
- MFC 를 지원합니다.
- Visual C++ 2005 용 프로젝트가 추가되었습니다.
- 프로젝트는 유니코드만 지원하도록 변경되었습니다.

20080810
- 옵션에 한글이 들어올 때의 문제점 수정 (Util, tstring)

20080726 및 이전 버전
- 아랄트랜스 홈페이지 문제로 찾을 수 없음

Hide_D

2009.09.18
17:05:09

 수고하셨습니다!

프시쵸

2011.09.28
09:44:30

수고하셨습니다!

List of Articles