エディットコントロールを右クリックしたときに表示されるメニューに項目を追加し、
それを処理したいのですが方法がわかりません。
どなたかご存知の方、ご教授をお願いします。
エディットコントロールのメッセージにてWM_INITMENUPOPUPを捕らえようとしましたが
捕らえられませんでした。
メニューの既存項目はそのまま使用したいと思いますが、既存を自前で用意することは
他言語(日本語以外)対応がしやすいように避けたいです。
開発環境VS2003・OSはXP(SP3)・MFCを使用していますが、SDKで
もかまいません。(ターゲットOSは95、98、XPです)
よろしくお願いします。
エディットコントロールの右クリックは、たしか、
IsDialogMessage()
にて処理されるはずです。
エディットボックスでなく、親ウィンドウ(ダイアログなのかな?)側で
捕らえてみてはいかがでしょう。
実際には試していないので、的はずれなことを言っているかもしれません。
その場合は、すいません。
bunさん 大変遅くなりましたが、回答ありがとうございました。
>エディットコントロールの右クリックは、たしか、
> IsDialogMessage()
>にて処理されるはずです。
>
>エディットボックスでなく、親ウィンドウ(ダイアログなのかな?)側で
>捕らえてみてはいかがでしょう。
試してみましたが、上手くいきませんでした。
(今回対象としているエディットコントロールの親ウィンドウはダイアログです。その
ダイアログはSDIアプリのメニューより表示させています。)
いろいろ試しましたが、あのメニューのハンドルを取得する方法は発見できませんでし
た。
別の方法を検討したいと思います。
参考までに、Spy++での調査結果を報告しておきます。
メニューが表示された直後に、
WM_ENTERIDLE
メッセージが来るようです。
そのメッセージにメニューのウィンドウハンドルが載ってきます。
(MFC使用だからCWnd::OnEnterIdle()の第2引数かな)
そのウィンドウから、GetMenu()したら、うまくいくのかな?
こっちでも試してみます。
残念、駄目ですね。
GetMenu()したらNULLが返ってきました。
bunさん 確認までしていただき、ありがとうございます。
>残念、駄目ですね。
>GetMenu()したらNULLが返ってきました。
あのハンドルの取得は不可能なのかな?