Vous n'êtes pas connecté. Ce forum permet seulement les utilisateurs connectés pour poster. Si vous voulez faire un post sur le forum, s'il vous plaît connecter.
Télécharger
Développer
Compte
Télécharger
Développer
Connexion
Mot de passe oublié ?
Créer un compte
Langue
Aide
Langue
Aide
×
Connexion
Nom du compte
Mot de passe
×
Mot de passe oublié ?
Traduction statut du Français
Catégorie :
Logiciel
Peuple
PersonalForge
Magazine
Wiki
Recherche
OSDN
>
Trouver un logiciel
>
Développement de logiciels
>
wxWindows日本語プロジェクト
>
Forums
>
Discussion-Ouverte
>
wxRichTextCtrlで日本語インライン変換もどき
wxWindows日本語プロジェクト
Description
Résumé du projet
Dashboard - Développeur
Page Web
Développeurs
Galerie d'images
Liste des flux RSS
Activité
Statistiques
Historique
Téléchargements
List of Releases
Stats
Code Source
Liste des dépôts de code
CVS
Voir le référentiel
Ticket
Liste des tickets
Liste des Jalons
Liste des types
Liste des composants
Liste des tickets/RSS fréquemment utilisés
Soumettre un nouveau ticket
Communication
Forums
Liste des forums
Forum d’aide (1)
Discussion-Ouverte (2)
Listes de diffusion
Liste de ML
Nouvelles
Forums:
Discussion-Ouverte
(Thread #30467)
Retour à la liste de discussion
RSS
wxRichTextCtrlで日本語インライン変換もどき (2011-09-26 10:03 by
senju
#59759)
Création d'un nouveau ticket
適切な場所が見つからなかったからここに投稿しておきます。
目的:
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);
}