初投稿させていただきます。
(環境:VC++6.0 SP6 MFC使用 WindowsXP SP2)
CHtmlViewを使ったアプリケーションにて、ブラウザ上の
(IEコンポーネントの)コンテキストメニューに
独自の項目を追加しようと思い、
IDocHostUIHandler::ShowContextMenuを実装して独自の項目を
追加するところまでは出来たのですが、その項目のIDにて
ON_COMMANDでコマンドハンドラを実装してみたものの、
うまく捉まえることができません…
どこにどう追加したらメニュー項目を実装することが
できますでしょうか?
識者の方々、どうか御教授お願い致します。
"WebBrowser Customization"
http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp
ここの、IDocHostUIHandler::ShowContextMenu というところに、
メニューをカスタマイズするサンプルがありますが、
参考になりますでしょうか?
dairygoodsさんありがとうございます。
私もここのページを参考にメニュー追加を試していたのですが
項目を消したり追加はできるのですけど、自分で追加した項目を
どのようにハンドラと結びつければいいのかわからずにいます。
CHtmlViewクラスやCMainFrameクラスに書いても何の反応も無しなので…
そもそも別の実装が必要なのでしょうか…?
# MFCは詳しくありませんが・・・
メッセージマップに下記のように追加すればよいだけでは?
ON_COMMAND(ID_YOUR_MENU_ID, OnYourMenuID)
どこのクラスに書くかは、SendMessage() で指定したウィンドウの属する
クラスに書けば良いはずです。
ハンドラと結び付けなくてもよければ、
int iSelection = ::TrackPopupMenu(...);
if (iSelection == 自分の) {
// 自分の処理;
} else {
// Send selected shortcut menu item command to shell
LRESULT lr = ::SendMessage(hwnd, WM_COMMAND, iSelection, NULL);
}
でもよいでしょう。
RAPTさん
dairygoodsさん
ありがとうございます。
さきほど、その前段階といいますか
追加した項目が無効のままになっていて悩んだんですが、
コールバックを設定してEnableMenuItemを行うことで
有効になりました。
ON_COMMANDについてはお二人のご意見を元に試してみたら
ちゃんと飛んできました!
これで無事に実装できそうです
RAPTさん、dairygoodsさん感謝です!
あ、解決チェック忘れてました。
無事解決です
ツイート | ![]() |