====== Callbacks personalizzate nelle wxhtmlwindow ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//17/02/2011//** \\ \\
Questa guida nasce dall'esigenza di dover realizzare una applicazione con una finestra contenente una wxhtmlwindow in grado di poter aprire solo alcuni link nel browser web predefinito e tutti gli altri all'interno di se stessa . \\
Ovvero: \\
**Link che si apriranno nel proprio browser web **
www.google.it
Come si puo' notare ci siamo inventati un nuovo target ("**_newpage**") che ci servira' per far capire alla nostra classe derivata da wxhtmlwindow di aprire il link nel browser. \\
Basta procedere con l'override della classe come segue.
class HtmlWindow: public wxHtmlWindow
{
public:
HtmlWindow(wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
long style = wxHW_SCROLLBAR_AUTO, const wxString& name = _T("htmlWindow"));
void OnLinkClicked(const wxHtmlLinkInfo& link);
};
HtmlWindow::HtmlWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos,
const wxSize& size, long style, const wxString& name)
: wxHtmlWindow(parent, id, pos, size, style, name)
{
}
void HtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link)
{
/*Definiamo nuovi target per il tag 'A' */
if (link.GetTarget()==wxT("_newpage")) wxLaunchDefaultBrowser(link.GetHref());
//aggiungere qui nuovi target
else if (link.GetTarget()==wxT("")) wxHtmlWindow::OnLinkClicked(link);
}
Possiamo ,ovviamente, inserire piu' target per il tag A semplicemente aggiungendo righe del genere al metodo ''void HtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) '' :
if (link.GetTarget()==wxT("_miotarget")) wxMessageBox(link.GetHref()) ;