2

Win32 ウィンドウでホストされている WPF ウィンドウがあります。この実装では、ユーザーが CTRL + V を押すと、クリップボード内のテキストが KeyDown イベントではなく KeyUp イベントで TextBox に貼り付けられます (MFC 内でホストされている場合の TextBox コントロールの制限のため)。したがって、テキストを貼り付けるために KeyUp イベントをオーバーライドしました。

ただし、一部のマシンでは、CTRL+V を1 回だけ実行すると、テキストが 2 回貼り付けられることがわかりました。さらに調査したところ、KeyDown (デフォルトのウィンドウ動作) と KeyUp イベント (私たちがオーバーライド) に貼り付けられていることがわかりました。

KeyDown と KeyUp の両方で、一部のマシンでも一部のマシンでも KeyUp のみに貼り付けられるのはなぜですか?

助けていただければ幸いです。

-ナヤン

4

1 に答える 1

0

CTRL + Vを押したときにどのコントロールにフォーカスがあるかによって異なると思います。

エディット コントロールにフォーカスがある場合、WM_PASTE 通知を受け取り、既定の WindowProc がクリップボードの内容をテキスト ボックスに貼り付けます。

別のコントロールにフォーカスがある場合は、自分で CTRL+V を処理して編集コントロールに貼り付ける必要があります。

于 2013-03-27T07:45:49.667 に答える