ComboBox의 text창에 위치한 캐럿에 바로 글자를 뿌려줄려고 합니다.
최용일님이 다음과 같은 api소스를 주었는데
ComboBox 사용시
그냥 캐럿의 핸들값을 넣었더니 안되더군요. (줘도 못 먹는다는...)
ComboBox의 Edit 핸들값을 넣는거랑은 서로 틀린건가요?
그리고 Edit의 핸들값은 어떻게 봐야하죠?
제가 핸들에 대한 이해가 부족해서 제대로 된 질문인지도 모르겠습니다.
아무튼 지도 편달 바랍니다. :-)
procedure InsertString(Wnd: THandle; const S: string);
var
SelPos: Integer;
begin
SendMessage(Wnd, EM_GETSEL, LongInt(@SelPos), 0); SendMessage(Wnd, EM_REPLACESEL, 0, LongInt(PChar(S))); SendMessage(Wnd, EM_SETSEL, SelPos, SelPos + Length(S));
Windows.SetFocus(Wnd);
end;
콤보박스라면 아래와 같이 에디트컨트롤 찾아서 하시면 됩니다.
델파이의 WinSight프로그램이나 MS의 Spi++같은거 이용하시면 보실 수 있습니다...
procedure InsertString(Wnd: THandle; const S: string);
var
SelPos: Integer;
EditWnd: THandle;
begin
EditWnd := FindWindowEx(Wnd, 0, 'Edit', '');
SendMessage(EditWnd, EM_GETSEL, LongInt(@SelPos), 0);
SendMessage(EditWnd, EM_REPLACESEL, 0, LongInt(PChar(S)));
SendMessage(EditWnd, EM_SETSEL, SelPos, SelPos + Length(S));
Windows.SetFocus(EditWnd);
end;
^^ 항상 즐코하세요...