Web上でのフォーカスの位置について – プログラミング – Home

Web上でのフォーカスの位置について
 
通知
すべてクリア

Web上でのフォーカスの位置について


かりん
 かりん
(@かりん)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

以前も質問させていただきましたが、現在、CHtmlViewクラスを派生させ、
ブラウザをカスタマイズしています。

表示されているページにエディットボックスがある場合、
エディットボックスにフォーカスがあるのか、その他の
リンク先にフォーカスがあるのかの判別はできるのでしょうか。

IEでは、リンクにフォーカスがあると、BSキーで[前のページに戻る]機能が
動作します。
この機能を無効にしたいのですが、エディットボックスにフォーカスがあるときは、
1文字削除は行いたいのです。

何か方法がございましたら、ご教授願えないでしょうか。
よろしくお願いいたします。

<開発環境>
Windows 2000 SP2
VC++ 6.0 SP5
IE 5.5


引用解決済
トピックタグ
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

>IEでは、リンクにフォーカスがあると、BSキーで[前のページに戻る]機能が
>動作します。

とは限りません。てか、逆です。

テキストエディットまたはテキストエリア以外がフォーカスを持っている時、[BS] で
「前に戻る」の動作が起きます。

>この機能を無効にしたいのですが、エディットボックスにフォーカスがあるときは、
>1文字削除は行いたいのです。

試して無いですが、CHthmlView::OnTranslateAccelerator() をオーバーライドして、ど
うにか細工できないですかね?


返信引用
かりん
 かりん
(@かりん)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

渋木さん、レスありがとうございます。

> 試して無いですが、CHthmlView::OnTranslateAccelerator() をオーバーライドして、
> どうにか細工できないですかね?

CHthmlView::OnTranslateAccelerator()をオーバーライドしてみましたが、
「'OnTranslateAccelerator' : 'CHtmlView' のメンバではありません。」
というようなコンパイルエラーが発生します。

MSDNには、CHthmlView::OnTranslateAccelerator()は、
「DocHostUIHandler のオーバーライド可能な関数」として挙げられていますが、
何かお約束のコードを入れなければならないのでしょうか。

それとも、「IEからのイベントの取得」の件名のときに、
VC7 の CHtmlView の方が少しやり易いかもしれませんとおっしゃっておられたので、
VC7で対応されているということでしょうか。

BSキーが押下されたかどうかは、PreTranslateMessage()でも
取得できるのですが、それが、エディットボックスにフォーカスがある時なのか
それ以外なのかを判別できず、困っています。

よろしくお願いします。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

>それとも、「IEからのイベントの取得」の件名のときに、
>VC7 の CHtmlView の方が少しやり易いかもしれませんとおっしゃっておられたの
で、
>VC7で対応されているということでしょうか。

そうです。
VC6 の CHtmlView は、CHtmlView::OnTnranslateAccelerator() に対応していません。

>BSキーが押下されたかどうかは、PreTranslateMessage()でも
>取得できるのですが、それが、エディットボックスにフォーカスがある時なのか
>それ以外なのかを判別できず、困っています。

フォーカス位置の取得は出来ないと思います。

代わりに、CHtmlView::OnTranslateAccelerator() をオーバーライドして、BS が「前へ
戻る」に変換されるタイミングが捕まえられないかと考えました。
試していないので駄目かもしれません。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

ちなみに、CHtmlView に頼るのを止めて自力でブラウザコントロールをホストすれば、
デフォルト状態ではキー入力によるブラウザ操作はすべて無効です。

逆に、自アプリでキー入力をコマンドに変換して、ブラウザコントロールに通知してや
る必要があります。


返信引用
かりん
 かりん
(@かりん)
ゲスト
結合: 24年前
投稿: 13
Topic starter  

> そうです。
> VC6 の CHtmlView は、CHtmlView::OnTnranslateAccelerator() に
> 対応していません。

やはり、そうでしたか。

> フォーカス位置の取得は出来ないと思います。
> :
> ちなみに、CHtmlView に頼るのを止めて自力でブラウザコントロールを
> ホストすれば、
> デフォルト状態ではキー入力によるブラウザ操作はすべて無効です。

行き着くところは、自力で作成するしかないってことですね。
開発期間が短期なので、CHtmlViewクラスで何とかしたかったのですが。。。

CHtmlViewクラスでは、無理だとわかっただけでも、収穫です。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました