![]()
前回までにステータスバーに現在開いているページのゾーン名やゾーンのアイコンを表示した。今回はその部分をダブルクリックしたときにゾーン設定画面が開くようにする。
#define WM_DNP_SHOWZONECONFIGURE (WM_APP + 10) //■追加
//ステータスバーのダブルクリック処理
LRESULT OnLButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
int i;
RECT rect;
BOOL ret;
POINT pt;
CStatusBarCtrl wndStatusBar = m_hWnd;
if(_hWndNotify == NULL || ::IsWindow(_hWndNotify) == FALSE)
return 0; //通知先が死んでいたらこれ以降処理しない
::GetCursorPos(&pt);
ScreenToClient(&pt);
i = 0;
while(1)
{
ret = wndStatusBar.GetRect(i,&rect);
if(ret == FALSE)
break;
if(::PtInRect(&rect,pt))
{
//i番目のペインがダブルクリックされた
switch(i)
{
case PAIN_DEFAULT:
::SendMessage(_hWndNotify,WM_DNP_SHOWSCRIPTERROR,NULL,NULL);
break;
case PAIN_PRIVACY_REPORT:
::SendMessage(_hWndNotify,WM_DNP_SHOWPRIVACYREPORT,NULL,NULL);
break;
case PAIN_SECURITY_REPORT:
::SendMessage(_hWndNotify,WM_DNP_SHOWPSECURITYREPORT,NULL,NULL);
break;
//■変更
case PAIN_ZONE:
::SendMessage(_hWndNotify,WM_DNP_SHOWZONECONFIGURE,NULL,NULL);
break;
case PAIN_PROGRESS:
case PAIN_RESERVED:
case PAIN_POPUP:
case PAIN_ADDON:
case PAIN_SECURITY:
case PAIN_BLOCKED:
case PAIN_ZOOM:
break;
}
break;
}
i++;
}
return 0;
}
BEGIN_MSG_MAP(CTabBrowser100View)
MESSAGE_HANDLER(WM_DNP_SCRIPTERROR, OnDnpScriptError)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_DNP_SHOWSCRIPTERROR, OnShowScriptError)
MESSAGE_HANDLER(WM_DNP_SHOWPRIVACYREPORT, OnShowPrivacyReport)
MESSAGE_HANDLER(WM_DNP_SHOWPSECURITYREPORT, OnShowSecurityReport)
MESSAGE_HANDLER(WM_DNP_SHOWZONECONFIGURE, OnShowZoneConfigure) //■追加
END_MSG_MAP()
private:
LRESULT OnShowZoneConfigure(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
ShowZoneConfigure(m_hWnd);
return 0;
}
//■追加
//ゾーン設定の表示
bool ShowZoneConfigure(HWND hWnd,LPCTSTR pszURL)
{
HMODULE hDLL;
void (WINAPI* pfnZoneConfigureW)(HWND,LPCWSTR) = NULL;
hDLL = ::LoadLibrary(_T("shlwapi.dll"));
if(hDLL == NULL)
return false;
(FARPROC&)pfnZoneConfigureW = ::GetProcAddress(hDLL,(LPCSTR)383);
if(pfnZoneConfigureW)
(*pfnZoneConfigureW)(NULL,(CAtlStringW)pszURL);
::FreeLibrary(hDLL);
return pfnZoneConfigureW ? true : false;
}
//■追加
//ゾーン設定の表示
bool ShowZoneConfigure(HWND hWnd)
{
HRESULT hr;
CComBSTR bstrURL;
if(_pIWebBrowser2 == NULL)
return false;
//URL取得
hr = _pIWebBrowser2->get_LocationURL(&bstrURL);
if(FAILED(hr))
return false;
return ShowZoneConfigure(hWnd,(CAtlString)bstrURL);
}
![]()
これでビルド/実行してステータスバーのゾーン情報の部分をダブルクリックするとゾーン設定画面が開いた。
次回はリンクをクリックしたときに鳴るクリック音を消す設定をする。
