본문 바로가기

쓰기

안녕하세요, whoami입니다.

질리지도 않고 프레임워크가 하나 더 올라갔습니다 -_-; 이번에는 유니코드 관련 문제 때문입니다.

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

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

다운로드는.. ATPluginFrame_20080712.zip


*ps. Hide_D군님 - 게임 폴더.. 라기보다는 현재 실행되는 프로그램의 폴더를 알려주는 함수는 GetATDirectory 함수를 조금 변형하면 됩니다. 다음의 한 줄을 변경하세요. 비슷한 함수 중복인 것 같아서 따로 넣지는 않았습니다.

// _T("ATCTNR.DLL") 을 NULL 로 변경하면 현재 실행중인 exe 파일의 폴더를 알아올 수 있다.
GetModuleFileName(GetModuleHandle(NULL), szDirectory, MAX_PATH);



아래는 ReadMe.txt 의 내용입니다.
-----------------------------------------------------------------------------------------------------------------
아랄 트랜스 플러그인 개발 프레임워크 20080712 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 - 플러그인 제작시 유용한 유틸리티 함수 모음
 ATPlugin.dsw / ATPlugin.dsp - Visual C++ 6.0 용 프로젝트 파일

* 후킹 플러그인을 만들 때
 ATPlugin.h 의 #define ATPLUGIN_HOOKER 를 주석 해제하시고 개발하세요.

* 번역 플러그인을 만들 때
 ATPlugin.h 의 #define ATPLUGIN_TRANSLATOR 를 주석 해제하시고 개발하세요.

* ATPLUGIN_VERSION 과 OnPluginVersion()
 0.2.20080518 공식 플러그인 규격은 아니지만 이후 플러그인 사양이 변했을 때 아랄트랜스
 제작자께서 참조 가능하도록 추가했습니다;

* 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)
 - 위의 옵션 파서와 반대로 옵션 모음을 옵션 문자열로 바꿔주는 함수.

조회 수 :
11600
등록일 :
2008.07.12
18:03:14
엮인글 :
https://arallab.hided.net/3308/162/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/3308

Hide_D

2008.07.12
19:28:07
... 못찾은 저는 까막눈인듯 ㄱ-

whoami

2008.07.12
21:12:44

Hide_D군님/
const TCHAR *GetExeDirectory()
{
 static TCHAR szDirectory[MAX_PATH]={_T(''),};
 int i;
 
 if (szDirectory[0] != _T(''))
  return szDirectory;

 // _T("ATCTNR.DLL") 을 NULL 로 변경하면 현재 실행중인 exe 파일의 폴더를 알아올 수 있다.
  GetModuleFileName(GetModuleHandle(NULL), szDirectory, MAX_PATH);

 for(i=lstrlen(szDirectory); i>=0; i--)
 {
  if (szDirectory[i] == _T('\'))
  {
   szDirectory[i]=_T('');
   break;
  }
 }
 return szDirectory;
}

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 2008-08-03 155435
25 Archive [플러그인, 소스] ATCode 테스트 버전 20080721 [10] file whoami 2008-07-21 13514
24 Archive [플러그인,소스] EzTransXP with 사용자사전플러그인(테스트 버전) 20080721_2(추가수정) file Hide_D 2008-07-21 9014
23 Archive [플러그인,소스] EzTransXP with 사용자사전플러그인(테스트 버전) 20080720_1 [6] file Hide_D 2008-07-20 11445
22 Archive [플러그인,소스] 사용자 사전 플러그인 0.1 20080718_2 [5] file Hide_D 2008-07-18 22052
21 Archive [플러그인,소스] 사용자 사전 플러그인 0.1 20080718 (테스트 버전) [1] file Hide_D 2008-07-18 9905
20 Archive [소스]추가 사용자 사전 0.1 [개발모드] file Hide_D 2008-07-18 9405
19 Archive [플러그인, 소스] preKoFilter 테스트 버전 20080716_3...oTL file whoami 2008-07-16 8454
18 Archive [플러그인, 소스] preKoFilter 테스트버전 20080716_2 [1] whoami 2008-07-16 9823
17 Archive [플러그인, 소스] preKoFilter 테스트 버전 20080716 file whoami 2008-07-16 9670
16 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080716 file whoami 2008-07-16 9680
15 Archive [플러그인, 소스] preKoFilter 테스트 버전 20080715 [1] file whoami 2008-07-15 9883
14 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080715 file whoami 2008-07-15 12650
13 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080714 [1] file whoami 2008-07-14 11895
12 Archive [플러그인, 소스] MultiPlugin 20080713 file whoami 2008-07-13 16861
11 Archive [플러그인, 소스] preKoFilter 테스트 버전 20080712 file whoami 2008-07-12 10275
10 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080712_2 file whoami 2008-07-12 9884
» Archive [소스] 플러그인 개발을 위한 기본 프레임워크 20080712 [2] file whoami 2008-07-12 11600
8 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080712 [1] file whoami 2008-07-12 14942
7 Archive [플러그인, 소스] MultiPlugin 20080709 [2] file whoami 2008-07-09 18645
6 Archive [버그 수정?]기리기리 이름 버그 수정 파일 [20080709 수정] [6] file Hide_D 2008-07-08 16004