PostMessage를 보내려 하는데요.. parameter는 dir경로를 보내려고 합니다..
dir경로의 주소값을 PostMessage의 LParam실어서.. 보낸다음..
받을때는 주소값을 가지고.. dir경로를 얻어내야 하는데..
어떻게 받아야 하는지요?
다음과 같이 코딩했는데 잘 안됩니다.. 글자 깨집니다..
부탁드립니다... 이상 초보가..
====== 보내는쪽 ========
var
PM3uDir: PChar;
begin
PM3uDir := PChar( 'c:\aaaa\aa.lst' );
PostMessage( Handle, WM_MEDIAPLAYER_PLAY, WPARAM_M3UDIR, LongInt(@PM3uDir) );
======= 받는쪽 ========
procedure TClientMain.WndProc(var message: TMessage);
var
PStr: PChar;
m3uDir: String;
begin
inherited;
case ( message.Msg ) of
WM_MEDIAPLAYER_PLAY :
begin
PStr := PChar( message.LParam );
m3uDir := StrPas( PStr );
ShowMessage('play, address:'+IntToStr(message.LParam)+', dir='+m3uDir);
end;
end;
end;
해주세요
원칙은 보내기 전에 디렉토리 정보를 담을 메모리장소를 확보하고
그 포인터를 보내는 거고 받는쪽은 그것을 받고 메모리장소를 다시
환원하는것 입니다.
var
PM3uDir: PChar;
begin
GetMem(PM3uDir, 255);
strpcopy(PM3uDir, 'c:\aaaa\aa.lst') ;
PostMessage( Handle, WM_MEDIAPLAYER_PLAY, WPARAM_M3UDIR, LongInt(PM3uDir) );
procedure TClientMain.WndProc(var message: TMessage);
var
PStr: PChar;
m3uDir: String;
begin
inherited;
case ( message.Msg ) of
WM_MEDIAPLAYER_PLAY :
begin
PStr := PChar( message.LParam );
m3uDir := StrPas( PStr );
ShowMessage('play, address:'+IntToStr(message.LParam)+', dir='+m3uDir);
FreeMem(PStr, 255);
end;
end;
end;