한글조합창 문제 해결
constructor TmyLIB.Create;
begin
// 그리드에서 한글 처리
Application.OnMessage := AppMessage;
.....
end;
procedure TmyLIB.AppMessage(var Msg: TMsg; var Handled: Boolean);
var lead: integer;
IMC: HIMC;
pt : TPoint;
rct: TRect;
tCF : tagCompositionForm;
begin
// 그리드에서만 처리
if screen.ActiveControl is TtsGrid then begin
// 한글 메시지 처리
if (Msg.message = WM_IME_COMPOSITION) or
(Msg.message = WM_CHAR) or
(Msg.message = WM_IME_STARTCOMPOSITION) or
(Msg.message = WM_IME_ENDCOMPOSITION) then
begin
if (prevMsg.message = WM_CHAR) and
(prevMsg.wParam > $0080) and
(Msg.message = WM_CHAR) and
(Msg.wParam > $0080) then
lead := 12
else
lead := 0;
IMC := ImmGetContext(ImmGetDefaultImeWnd(Application.ActiveFormHandle));
GetCaretPos(pt);
tCF.dwStyle := CFS_RECT;
pt.Y := pt.Y - 3;
pt.X := pt.X + lead;
tCF.ptCurrentPos := pt;
rct.TopLeft := pt;
tCF.rcArea := rct;
ImmSetCompositionWindow(IMC,@tCF);
ImmReleaseContext(ImmGetDefaultImeWnd(Application.ActiveFormHandle), IMC);
end;
prevMsg := Msg; // 메시지 보관. 연속으로 WM_CHAR 오고 한글이면 조립창 우측으로 이동
end;
Handled := False;
end;
'Delphi 문제점 Tip' 카테고리의 다른 글
vcl60.bpl 에러 (0) | 2022.05.12 |
---|---|
TWebBrowser에서 script에러 메세지 제거 (0) | 2022.05.11 |
Delphi 4~7을 감염시키는 바이러스 (0) | 2022.05.02 |
EH 그리드에서 한글문제 해결 (0) | 2022.04.28 |
CooltrayIcon으로 만든 프로그램이 실행중일때 윈도우종료가 안되요? FormCloseQuery(Sender: TObject; var CanClose: Boolean) (0) | 2022.04.27 |
댓글