![]()
前回はアドレスバーにアクティブなタブで読み込まれたホームページのURLが自動で表示されるようにした。しかしタブを切り替えたときにアドレスバーのURL表示が変わらないという問題があった。今回はその点を修正する。
BEGIN_MSG_MAP(CMainFrame)
MESSAGE_HANDLER(WM_DNP_CREATENEWTAB, OnDnpCreateNewTab)
MESSAGE_HANDLER(WM_DNP_CHANGEFOCUS, OnDnpChangeFocus)
MESSAGE_HANDLER(WM_DNP_CHANGEADDRESS, OnDnpChangeAddress)
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)
COMMAND_ID_HANDLER(ID_IE_ADDFAVORITE, OnIEAddFavorite)
COMMAND_ID_HANDLER(ID_IE_ORGANIZE_FAVORITE, OnIEOrganizeFavorite)
NOTIFY_CODE_HANDLER(TBVN_CONTEXTMENU, OnTabContextMenu)
NOTIFY_CODE_HANDLER(TBVN_PAGEACTIVATED, OnTabPageActivated) //■追加
MESSAGE_HANDLER(WM_MENUSELECT, OnMenuSelect)
COMMAND_RANGE_HANDLER(ID_FAVORITE_FIRST,ID_FAVORITE_LAST,OnFavorite)
CHAIN_MSG_MAP_MEMBER(_cFovMenu)
CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)
CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)
END_MSG_MAP()
//■追加
//タブが選択されたときの処理
LRESULT OnTabPageActivated(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
if(pnmh == NULL)
return 0;
bool ret;
CAtlString strURL;
CTabBrowser100View* pView;
pView = GetActivePageView(); //アクティブビュー取得
if(pView == NULL)
return 0;
ret = pView->GetURL(strURL); //URL取得
if(ret == false)
return 0;
//アドレスバーのURL変更
_wndAddressBar.SetWindowText(strURL);
return 0;
}
//■追加
bool GetURL(CAtlString& strURL)
{
HRESULT hr;
CComBSTR bstr;
strURL = _T("");
if(_pIWebBrowser2 == NULL)
return false;
hr = _pIWebBrowser2->get_LocationURL(&bstr);
if(FAILED(hr))
return false;
strURL = bstr;
return true;
}
![]()
これでビルド/実行するとタブを切り替えたときにもきちんとアドレスバーにそのタブで開いているページのURLが表示されるようになった。
まだまだアドレスバーで修正しなければいけない点が残っているがとりあえず保留して、次回はタブブラウザーが起動するときに前回閉じた位置で開くように設定する。
