![]()
前回までにアドレスバーの実装やリンクを新しいタブで開く機能の実装などにより、タブブラウザーとしてそれらしく動作するようになってきた。今回は「戻る」「進む」「更新」「中止」ボタンをツールバーに作る。
前回までに作成したプロジェクトを開く。まずはツールバーにボタンを追加するため、リソースビューの「Toolbar」にある「IDR_MAINFRAME」をダブルクリックしてツールバーリソースを開いて、ボタンを4つ追加する。
![]()
さらに「プロパティ」ウインドウを開き、新しく作成したボタンのIDを設定する。ここでは
「戻る」ボタンは「ID_IE_BACK」
「進む」ボタンは「ID_IE_NEXT」
「中止」ボタンは「ID_IE_STOP」
「更新」ボタンは「ID_IE_REFRESH」
とした。これでツールバーリソースに関する設定は終わりだ。
//■追加
void Back(void)
{
if(_pIWebBrowser2)
_pIWebBrowser2->GoBack();
}
//■追加
void Next(void)
{
if(_pIWebBrowser2)
_pIWebBrowser2->GoForward();
}
//■追加
void Stop(void)
{
if(_pIWebBrowser2)
_pIWebBrowser2->Stop();
}
//■追加
void Refresh(void)
{
if(_pIWebBrowser2)
_pIWebBrowser2->Refresh2(&CComVariant(REFRESH_COMPLETELY));
}
BEGIN_MSG_MAP(CMainFrame)
NOTIFY_CODE_HANDLER(CBEN_ENDEDIT, OnAddressbarEnter)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
COMMAND_ID_HANDLER(ID_FILE_NEW, OnFileNew)
COMMAND_ID_HANDLER(ID_VIEW_TOOLBAR, OnViewToolBar)
COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(ID_WINDOW_CLOSE, OnWindowClose)
COMMAND_ID_HANDLER(ID_WINDOW_CLOSE_ALL, OnWindowCloseAll)
COMMAND_RANGE_HANDLER(ID_WINDOW_TABFIRST, ID_WINDOW_TABLAST, OnWindowActivate)
COMMAND_ID_HANDLER(ID_IE_BACK, OnIECommand) //■追加
COMMAND_ID_HANDLER(ID_IE_NEXT, OnIECommand) //■追加
COMMAND_ID_HANDLER(ID_IE_STOP, OnIECommand) //■追加
COMMAND_ID_HANDLER(ID_IE_REFRESH, OnIECommand) //■追加
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
END_MSG_MAP()
//■追加
//「戻る」「進む」などのIEコマンド処理
LRESULT OnIECommand(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
int nPage;
CTabBrowser100View* pView;
nPage = m_view.GetActivePage();
if(nPage < 0)
return 0; //アクティブなタブがない
pView = (CTabBrowser100View*)m_view.GetPageData(nPage);
if(pView == NULL)
return 0; //ビューが取得できなかった
switch(wID)
{
case ID_IE_BACK: //戻る
pView->Back();
break;
case ID_IE_NEXT: //進む
pView->Next();
break;
case ID_IE_STOP: //ストップ
pView->Stop();
break;
case ID_IE_REFRESH: //更新
pView->Refresh();
break;
}
return 0;
}
![]()
これでビルド/実行すると、ツールバーに「戻る」や「進む」などのボタンが現れ、実際に「戻る」などの操作ができた。
今回作成した「戻る」「進む」ボタンは常に押せる状態にある。次回はIEコントロールから履歴を取り出して、「戻る」ことができるときだけ「戻る」ボタンを有効になるようにする。
