CHtmlViewの新しいウィンドウへのURL


fuji  2006-06-28 19:44:01  No: 62352

以前お世話になりましたfujiと申します。
(環境:VC++6.0 SP6 MFC使用 WindowsXP SP2)

CHtmlViewを使ったアプリケーションにて、新しいウィンドウを開いた際に
デフォルトのブラウザで開く処理(ShellExecute使用)をVC++サンプルのdrillerなどを参考にして追加したのですが、IDocHostUIHandler::TranslateUrlにて取得できるURLは、新しいウィンドウを開く(window.openなどの)リンクをクリックしたときのものと一致していると考えていたのですが、
http://www.〜.co.jp/index.html#name1
などの場合に#〜という箇所を拾ってくれないようなのです。

MSDN(WebBrowser CustomizationのControlling Navigation)
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/wbcustomization.asp
によりますと、TranslateUrlではなくIDispatch::Invokeを実装しなさいとあり、これでできるのかなと思ったのですが如何せんこれをどう実装したらよいのか見当がつきません…
識者の方々、この実装の仕方のヒントでも教えていただけないでしょうか…?
また、もともと新しいウィンドウを開く場合のURLを取得する方法は
このようなやりかたではないなど、御指摘ありましたらお願いします。


fuji  2006-06-28 19:49:11  No: 62353

改行が適切でなかったです…
読みづらくてすみません


fuji  2006-06-28 23:23:11  No: 62354

よくソースをみましたら追加したところにIDispatchの派生クラスを
実装していました…
とりあえずここをよく調べてみます。


fuji  2006-06-29 02:31:23  No: 62355

IDispatch::Invokeの箇所を見てみましたが…ちょっとよくわかりませんでした。調べたところでは、それ以前にイベントの関連付け(たとえばaタグ中のwindow.openのイベントになりますでしょうか)を実装しないといけないようです。
そもそも何故、IDocHostUIHandler::TranslateUrlに「#」以降が入ってきてくれないのか知りたいのですが、MSDNなどに仕様が解説してあるところがあるのでしょうか…?


fuji  2006-07-11 22:34:11  No: 62356

Microsoftのサポートに問い合わせましたら、#以降は切ってしまうということでした。IEは別に保持して処理しているそうなので、何とか自前で実装するしかないようです…


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加