0

CHeaderCtrl を使用する MFC アプリケーションがあり、HDS_FILTERBAR スタイルを使用してデータをフィルター処理しています。よく働く。しかし、ユーザーはフィルター セルにテキストを貼り付けたいと考えています。>Paste を呼び出すことができるように、CEdit タイプのコントロールへのポインタをここで取得する方法が見つかりませんでした。アプリケーションの ::PreTranslateMessage のフィルターにいる間に Control-V を検出することができました。CHeaderCtrl->SetItem 呼び出しを使用してフィルターにテキストを送信する方法がありますが、これはすぐにフィルターを起動します。テキストを貼り付けたいだけです。

だから...私はkeybd_eventとSendInputを使ってキーストロークを強制しようとしました(私は必死でした)。これは機能しましたが、おそらく MFC のメッセージ処理が原因で、望ましくない副作用がありました。私の場合、ユーザーは既に Control + V を押していました。しかし、文字「A」を送信し、SHIFT キーを強制するだけで、次の場合に CHeaderCtrl のフィルターが貼り付けをサポートしていることを偶然発見しました。

コントロール + シフト + V

問題は、それを行うのが難しく、ユーザーにこれを行うように指示するのが難しいことです。

keybd_event を使用してこのシーケンスをシミュレートできますが、やはり、これは非常に風変わりです。

フィルター処理された CHeaderCtrl への CEdit (存在する場合) へのアクセスを取得する方法、または別の回避策を知っている方法を誰かが見つけることができますか? スパイ ユーティリティを使用してみましたが、何を探すべきかわかりませんでした。長い投稿で申し訳ありません。

4

1 に答える 1

0

したがって、アクセラレータリストから Ctrl+V を削除すると、コントロール内で処理できます... (コメントに従って回答が追加されました)。

于 2013-11-11T17:41:49.320 に答える