C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[26403] 델파이 소스를 빌더로 변경중인데요 잘 안되서엽.. ㅡ_ㅡ; 도와주셈 ㅡ_ㅡ;
수야!╋ [sooya23] 847 읽음    2003-07-23 17:47
우선 질문부터...

아래 델파이 소스 StartPlugin함수 안에 보시면

      SendModuleMessage(hInstance, P2M_REQINFO_SELECTUSER, Integer(@SelID), Length(SelID));

이 부분이 있는데요

SelID의 주소를 넘겨서 어떤 문자들이 담겨져 오게됩니다.

벼래별짓을 다해봤는데요

*를 주기도하고 (int)&SelID를 주기도했구요

그런데 값이 전달되어 오질 않습니다. ㅡ_ㅡ; 도와주세용 ㅡ_ㅡ;

어케 바꿔야할지도 모르겠습니다.

ㅡ_ㅡ;

또하나는.. DLL의 hInstance를 메시지를 줄때마다 던져줘야하는데요

C로 된 소스에보면 첫번재 함수에 있는 HINSTANCE 로 선언된 넘이 맞을까요?

첫번째 질문이 더 급합니다 ㅡ0ㅡ;

부탁드릴께용~


   TProcPointer = Pointer;

   TSendModuleMessage = function(hInstance: Integer; Msg: Cardinal; wParam: Integer; lParam: Integer): Integer; stdcall;
    {Main Module 에서 필요한 플러그인 모듈의 정보를 구한다. Plugin -> Messenger}

function StartPlugin(sRegKey: Pchar; sStartInfo: PChar; pProc: TProcPointer; launCh: Integer): Integer; stdcall;
{메신져 의 시작}

var
   SendModuleMessage: TSendModuleMessage;
   plgRegKey: string;
   plgStartInfo: PChar;
   MyID: string;

implementation

function StartPlugin(sRegKey: Pchar; sStartInfo: PChar; pProc: TProcPointer; launCh: Integer): Integer; stdcall;
var
   SelID: packed array[0..20] of Char;
   ParceList: TStringList;
begin

   plgRegKey := sRegKey; //메신져의 메인 레지스트리 키값이 넘어온다.
   plgStartInfo := sStartInfo;
   SendModuleMessage := pProc; //메신져 쪽으로

   ParceList := TStringList.Create;

   ParceList.Text := plgStartInfo;
   MyId := ParceList.Strings[0]; //첫번째 인자로 부터 자신의 아이디를 받아온다.
   ParceList.Free;

   if launCh = 0 then begin
      SendModuleMessage(hInstance, P2M_REQINFO_SELECTUSER, Integer(@SelID), Length(SelID));

   end else begin
          //상대방으로 부터 응답을 받았을때.
   end;

   Result := 0;
end;



이건 제가 빌더로 컨버팅한건데요
델파이에서 선언한 TProcPointer를 그냥 TSendModuleMesage로 선언하여 사용하였습니다.

typedef int (__stdcall *TSendModuleMessage)(int hInstance, unsigned int Msg, int wParam, int lParam);

extern "C" Export int __stdcall StartPlugin(char *sRegKey, char *sStartInfo, TSendModuleMessage pProc, int launCh);

TSendModuleMessage SendModuleMessage;
AnsiString plgRegKey;
char*  plgStartInfo;
AnsiString MyID;
int MyhInstance;

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
  MyhInstance = (int) hinst;
  return 1;
}
//---------------------------------------------------------------------------
int __stdcall StartPlugin(char *sRegKey, char *sStartInfo, TSendModuleMessage pProc, int launCh)
{
  AnsiString SelID;
  TStringList *ParceList = new TStringList;

  plgRegKey         = sRegKey;    //메신져의 메인 레지스트리 키값이 넘어온다.
  plgStartInfo      = sStartInfo;
  SendModuleMessage = pProc;      //메신져 쪽으로

  ParceList->Text = plgStartInfo;
  MyID = ParceList->Strings[0];

  delete ParceList;

  if(launCh == 0)
  {
    SendModuleMessage(MyhInstance, P2M_REQINFO_SELECTUSER, (int)*SelID, SelID.Length());
  }

  return 0;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
26403 델파이 소스를 빌더로 변경중인데요 잘 안되서엽.. ㅡ_ㅡ; 도와주셈 ㅡ_ㅡ; 수야!╋ 847 2003/07/23
32907     Re:델파이 소스를 빌더로 변경중인데요 잘 안되서엽.. ㅡ_ㅡ; 도와주셈 ㅡ_ㅡ; 수야!╋ 702 2003/07/24
32906     Re:델파이 소스를 빌더로 변경중인데요 잘 안되서엽.. ㅡ_ㅡ; 도와주셈 ㅡ_ㅡ; 수야!╋ 729 2003/07/24
32905     Re:델파이 소스를 빌더로 변경중인데요 잘 안되서엽.. ㅡ_ㅡ; 도와주셈 ㅡ_ㅡ; 수야!╋ 754 2003/07/24
32904     Re:델파이 소스를 빌더로 변경중인데요 잘 안되서엽.. ㅡ_ㅡ; 도와주셈 ㅡ_ㅡ; Builder MySelf : 683 2003/07/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.