これまでの作業でまたソースコードが煩雑化し、まったく利用されていない部分も多く残っている。今回は機能の追加などはせずに少しソースコードを整理する。
過去の「お気に入り」関連処理を削除
「お気に入り」メニューはIShellMenuにより表示しているが、IShellMenuによる実装の前にはフォルダからインターネットショートカットを検索して直にメニューを生成/表示していた。それらの処理はもう利用しなくなったので削除する。
まず「FavoritesMenu.h」と「DnpFolderMenu.h」の2つのファイルをプロジェクトから取り除く。プロジェクトからの削除に加えて、ファイル自体も削除してしまってかまわない。
そして「MainFrm.h」の中にある「#include "FavoritesMenu.h"」や「CHAIN_MSG_MAP_MEMBER(_cFovMenu)」、関数「CMainFrame::OnMenuSelect」や「CMainFrame::OnFavorite」を削除する。
現在の「お気に入り」関連処理を整理
「CShellMenuCallback」を独立したヘッダーファイルに移動する。
そしてCMainFrame::PopupMenuの引数に「HWND hWnd」を追加する。この関数の内部処理では「m_hWnd」を参照する部分を「hWnd」に変えて、ウインドウを引数で渡せるようにする。bool PopupMenu(int nX,int nY,HWND hWnd)
次はこれまでメニューリソースの「お気に入り」メニューの位置をソースコードの中で「4」と固定して指定していた。それを簡単に変更できるようにする。 そのためにまず「MainFrm.h」の先頭に以下の宣言を追加する。
#define FAVORITE_MENU_POSITION 4 //メインウインドウ用リソースでの「お気に入り」メニューの位置
そして「CMainFrame::PopupMenu」、「CCommandBarCtrl2::DoPopupMenu」、「CMainFrame::OnMenuSelectForPopup」内の「4」というメニュー位置の指定をすべて「FAVORITE_MENU_POSITION」に置き換える。
最後に「お気に入り」関連処理を「CMainFrame」から離した場所に移動する。
独立したヘッダーファイルにクラス「CIShellMenuPopup」を新しく作り、
「CMainFrame::PopupMenu」、「_pIMenuBand」、
「CMainFrame::TranslatePopupMessage」をそのクラスの中に移動する。そして「CMainFrame」の派生元に「CIShellMenuPopup」を追加する。
IEツールバー関連処理を整理
「CMainFrame」内に実装しているインストールされているIEツールバーを検索する処理などを離した場所に移動する。
独立したヘッダーファイルにクラス「CIEToolbarManager」を新しく作り、CMainFrame内の以下のメンバ関数、クラス、変数をその中に移動する。
・CDummyWnd
・CAvailableIEToolbar
・_acAvailableIEToolbar、
・CLSIDtoUIString
・RegEnumKeyName
・EnumAvailableIEToolbar、
そして「CMainFrame」の派生元に「CIEToolbarManager」を追加する。
その他
・CAmbientControl
・CTabBrowser100View::CIEToolbarInfo
を独立したヘッダーファイルへ移動する。
・CTabBrowser100View::GetZone
を「CIEUtility」へ移動する。
「CTabBrowser100View」と「CMainFrame」内のメンバ関数やメンバ変数にprotectedやpublicの指定を追加する。
・「CTabBrowser100View」内の変数の記述位置を前後に移動
・その他、少しだけコメントを追加
今回は以上の細かなソースコード整理をした。次回は現在のページを開いたままリンクをバックグラウンドのタブで開けるようにする。
