0

TCanvas 要素と組み合わせた Windows API を使用して、Delphi で高度なテキスト エディター コンポーネント (固定幅、構文の強調表示など) を作成しました。 TEdit などのキャレットも表示する同じアプリケーションが、エディター コンポーネントからフォーカスを盗んでいます。新しいエディター (TEdit など) のキャレットは表示されません。代わりに、エディター コンポーネント内でキャレットが移動します。たとえば、新しいエディター (TEdit) で文字を書くと、期待どおりに表示され、キャレットがコンポーネント内で右に移動します。何が原因でしょうか? Win API のキーボード フォーカスの処理と VCL の処理の間に競合があると思われます。私のエディター コンポーネントでは、WM_SETFOCUS に応答して CreateCaret を使用し、WM_KILLFOCUS に応答して DestroyCaret を使用します。

4

2 に答える 2

1

コンポーネントのコードに些細なバグを見つけました。謝罪いたします。

于 2010-02-28T18:26:49.003 に答える
0

私の最初の考えは、WM_KILLFOCUS メッセージを受け取っていないということです。それが起こっているかどうかを伝える診断を作成します。

この種の問題にデバッガーを使用する傾向はありません。このような相互作用を診断しようとすると、タイトルを変更するなどの作業がうまくいくことがわかりました。

于 2010-02-27T22:23:41.203 に答える