Q&A

  • ListBox의 첫번째 인덱스 문자열데이타를 제대로 구하려면?
ListBox의 핸들값을 알고 있는데 SendMessage를 써서
첫번째 라인의 문자열 데이타를 구하려는데 잘 안되는군요
  Buff:array[0..1024] of char;

SendMessage(wnn,LB_GETTEXT,wparam(0),lParam(@Buff));
   Edit1.Text:=string(Buff);
으로 코딩해봤는데
Edit1에는 '?'만 찍히는군요
변수선언 또는 파라미터 사용에 문제가 있는것 같은데요
어디를 고쳐줘야하는지 고수님 도움 부탁드립니다
1  COMMENTS
  • Profile
    미소나눔 2003.01.15 06:04
    특정 리스트의 문자수를 구하고 메로리 할당후 해당문자열 얻어옵니다.

    MSDN
    [ . . . .The buffer must have sufficient space for the string and a terminating null character. ]

    procedure TForm1.Button4Click(Sender: TObject);
    var
        Len, Index : Integer;
        pStr : PChar;
        ReValString : String;
    begin
        Index := 0;
        Len := ListBox2.Perform(LB_GETTEXTLEN, Index, 0);
        GetMem(pStr, Len+1);     // +1  null 종료문자
        ListBox2.Perform(LB_GETTEXT, wParam(Index), lParam(pStr));
        SetString(ReValString, pStr, Len);
        Edit1.Text := ReValString;
        FreeMem(pStr);
    end;

    즐푸~~