特集:Webアプリケーション+αの使い勝手を実現するカスタムブラウザの作り方
調べもの専用Googleブラウザを作ってみよう
アリエル・ネットワーク
中山淳
2006/12/7
カスタムブラウザの作成 |
開発環境が正しく構築できたことを確認して、次はいよいよカスタムブラウザの作成です。
1. 先ほど作成したmain.cppの内容をすべて削除したうえで、下記のソースコードをコピー&ペーストしてください。
コード2 ここをクリックすると、縮小なしのテキスト画面が表示されます |
2. メニューの[ビルド]―[ソリューションのビルド]を選んで、ビルドを行います。[出力]ペインに「ビルド: 1 正常終了、0 失敗」と表示されれば成功です。
3. メニューの[デバッグ]―[デバッグ開始]を選び、ビルドしたAtBrowserを実行します。
インターネットオプションで設定しているホームページが表示されれば成功です。最小限の実装なので、メニューバーもツールバーもステータスバーもありませんが、これがカスタムブラウザの基礎になります。実装の詳細に関してはコメントを読んでください。
カスタムブラウザらしいコードを追加する |
カスタムブラウザらしい機能を追加するには、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) |
[新]
コード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ブラウザ> プラスαの価値をカスタムブラウザ |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|