You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
Download
Desenvolver
Conta
Download
Desenvolver
Login
Forgot Account/Password
Criar Conta
Linguagem
Ajuda
Linguagem
Ajuda
×
Login
Nome de acesso
Senha
×
Forgot Account/Password
Estado tradução de Português
Category:
Software
People
PersonalForge
Magazine
Wiki
Pesquisa
OSDN
>
Pesquisar Software
>
Software Development
>
wxWindows日本語プロジェクト
>
Fóruns
>
Open Discussion
>
wxRichTextCtrlで日本語インライン変換もどき
wxWindows日本語プロジェクト
Descrição
Project Summary
Developer Dashboard
Página da Web
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
Histórico
Downloads
List of Releases
Stats
Código Fonte
Code Repository list
CVS
Visualizar Repositório
Tíquete
Ticket List
Milestone List
Type List
Lista de componentes
List of frequently used tickets/RSS
Submit New Ticket
Communication
Fóruns
List of Forums
Ajuda (1)
Open Discussion (2)
Mailing Lists
list of ML
News
Fóruns:
Open Discussion
(Thread #30467)
Return to Thread list
RSS
wxRichTextCtrlで日本語インライン変換もどき (2011-09-26 10:03 by
senju
#59759)
Criar tíquete
適切な場所が見つからなかったからここに投稿しておきます。
目的:
wxRichTextCtrlで日本語入力しようとすると、入力中の文字がウィンドウの外側にきてあまりイケテない。
現在の文字の大きさ、色で表示しようとするとめんどくさいので、最低限カーソルの場所で変換できるようにする方法。
Windows専用です。
大まかな方法:
wxRichTextCtrlを継承し、MSWWindowProcをオーバーライドし、IMMのメッセージを受信してゴニョゴニョする。
詳細な方法:
1.メンバにIMEへのハンドルを持っておく。
private:
HIMC hIme;
とか。
2.コンストラクタ内でハンドラを初期化
hIme = ImmGetContext(m_hWnd ); // m_hWndは継承元のプロテクトなメンバ
3.WM_IME_STARTCOMPOSITIONを受信したら、IMEに場所を教えてやる。
WXLRESULT Derived::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam){
if(message == WM_IME_STARTCOMPOSITION){
COMPOSITIONFORM form;
ImmGetCompositionWindow(hIme, &form);
wxCaret* c = GetCaret();
wxPoint p = c->GetPosition();
form.ptCurrentPos.x = p.x;
form.ptCurrentPos.y = p.y;
ImmSetCompositionWindow(hIme, &form);
return 0;
}
return wxRichTextCtrl::MSWWindowProc(message, wParam, lParam);
}