特集:Webアプリケーション+αの使い勝手を実現するカスタムブラウザの作り方

調べもの専用Googleブラウザを作ってみよう



アリエル・ネットワーク
中山淳
2006/12/7

 カスタムブラウザの作成

  開発環境が正しく構築できたことを確認して、次はいよいよカスタムブラウザの作成です。

1. 先ほど作成したmain.cppの内容をすべて削除したうえで、下記のソースコードをコピー&ペーストしてください。






コード2 ここをクリックすると、縮小なしのテキスト画面が表示されます

2. メニューの[ビルド][ソリューションのビルド]を選んで、ビルドを行います。[出力]ペインに「ビルド: 1 正常終了、0 失敗」と表示されれば成功です。

3. メニューの[デバッグ][デバッグ開始]を選び、ビルドしたAtBrowserを実行します。

 インターネットオプションで設定しているホームページが表示されれば成功です。最小限の実装なので、メニューバーもツールバーもステータスバーもありませんが、これがカスタムブラウザの基礎になります。実装の詳細に関してはコメントを読んでください。

 カスタムブラウザらしいコードを追加する

  さて、このままではWebページを表示できるだけです。

 カスタムブラウザらしい機能を追加するには、IEコンポーネントのイベントを捕捉してそれに対応した振る舞い(ハンドラ)を追加する必要があります。

 ハンドラを追加するには、ハンドラ定義を73〜74行目の「BEGIN_SINK_MAP(AtBrowser)」と「END_SINK_MAP()」の間に追記し、実装をAtBrowserに記述します。

 まずは、AtBrowserが常に表示されているタイトルバーに、Webページのタイトルが表示されるようにします。

 Webページの読み込みが終わったタイミングでページのタイトルをアプリケーションウィンドウのタイトルに設定する、という方針で実装します。

 読み込みが終わったことを扱うイベントのIDがDISPID_DOWNLOADCOMPLETEですので、このハンドラを定義します。

1. DISPID_DOWNLOADCOMPLETEのハンドラを定義します。具体的には、76〜77行目を次のように変更します

[旧]

    BEGIN_SINK_MAP(AtBrowser)
    END_SINK_MAP()

[新]

コード3 ここをクリックすると、縮小なしのテキスト画面が表示されます

2. ハンドラの実体であるonDownloadComplete()の実装を追加します。


コード4 ここをクリックすると、縮小なしのテキスト画面が表示されます

3. メニューの[ビルド][ソリューションのビルド]を選んで、ビルドを行います。[出力]ペインに「ビルド: 1 正常終了、0 失敗」と表示されれば成功です。

4. メニューの[デバッグ][デバッグ開始]を選び、ビルドしたAtBrowserを実行します。

 リンクをクリックしてページが切り替わったときに、タイトルバーに表示されている文字列がそのページのタイトルになっていれば成功です。イベントのIDやハンドラのプロトタイプは下記のページで調べることができます。

DWebBrowserEvents2 Interface

 主なイベントとして、

・ユーザーがリンクをクリックした直後に発生する DISPID_BEFORENAVIGATE2

 リンク先を判断して自動的に別ウィンドウで開いたり、独自のスキーム(httpやftpといったURLの先頭に付く文字列)を処理できるようにしたりできます。

・Webページの表示が終わった後に発生する DISPID_DOCUMENTCOMPLETE

 ページ中に含まれる特定の単語を、Wikipediaや辞書ページへのリンクに変えるといった処理が可能です。

・Webページの読み込みが終わった後に発生する DISPID_DOWNLOADCOMPLETE

 今回のサンプルでは、ウィンドウタイトルを変更するために使っています。

・新しいウィンドウが開かれるときに発生する DISPID_NEWWINDOW2

 ウィンドウの作成をキャンセルして、(例えば)タブで開くといったこともできます。

3/4

 INDEX

調べもの専用Googleブラウザを作ってみよう
  Page1<調べもの専用ブラウザを作ってみよう>
メリットとデメリット/カスタムブラウザの開発を始める前に
  Page2<カスタムブラウザの基礎作り>
Hello Worldアプリケーションで動作確認
Page3<カスタムブラウザの作成>
カスタムブラウザらしいコードを追加する
  Page4<調べもの専用Googleブラウザ>
プラスαの価値をカスタムブラウザ


HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間