/** * 左クリック時に起こるイベント */ void ThreadContentWindow::OnLeftClickHtmlWindow(wxHtmlLinkEvent& event) { const wxHtmlLinkInfo linkInfo = event.GetLinkInfo(); const wxString href = linkInfo.GetHref(); const wxString target = linkInfo.GetTarget(); wxString rest = wxEmptyString; long res = 0; // bmp,jpg,jpeg,png,gifなどの拡張子が末尾に付いている場合ダウンロードを行う if (regexImage.IsValid()) { // 正規表現のコンパイルにエラーがなければマッチさせる if (regexImage.Matches(href)) { // 画像ファイルをクリックしたのでダウンロードする const wxString ext = regexImage.GetMatch(href, 3); this->SetJaneCloneImageViewer(href, ext); } else if (href.StartsWith(wxT("#"), &rest) && rest.ToLong(&res, 10)) { if ( 0 < res && res <= 1000) { OnLeftClickResponseNumber(event, href, res); } } else { // 通常のリンクかどうか判定して処理 OnClickOrdinaryLink(href); } } }
INLINE void wxeReturn::add(const wxHtmlLinkInfo &val) { addAtom("wxHtmlLinkInfo"); add(val.GetHref()); add(val.GetTarget()); addTupleCount(3); }
void extHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { wxString href = link.GetHref(); wxString target = link.GetTarget(); if (target.StartsWith(wxT("TV:"))) { TextViewer *tw = new TextViewer(this); tw->LoadFile(href); target = target.AfterFirst(wxT(':')); if (!target.IsEmpty()) tw->SetTitle(target); tw->ShowModal(); return; } #ifdef __WXMSW__ ShellExecute((HWND)GetHandle(), wxT("open"), href.c_str(), NULL, NULL, SW_SHOWNORMAL); #else ::wxLaunchDefaultBrowser(href, wxBROWSER_NEW_WINDOW); #endif }