<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic EventNotifier for Browser Control in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/EventNotifier-for-Browser-Control/m-p/224750#M1691</link>
    <description>&lt;DIV class="actalk-migrated-content"&gt;Hi, Archicad dev teams&lt;BR /&gt;I am developing the Add-on in Archicad 24 using Browser control.&lt;BR /&gt;I tried to handle downloading event but I can't build the project.&lt;BR /&gt;Please help me.&lt;BR /&gt;&lt;BR /&gt;This is my code.&lt;BR /&gt;&lt;BR /&gt;&lt;LI-CODE lang="cpp"&gt;static bool HandleDownloadingEvent(const DG::BrowserBase&amp;amp; source, const DG::BrowserDownloadingArg &amp;amp;args);

void BrowserPalette::InitBrowserControl()
{
	GS::UniString url = this-&amp;gt;GetSiteUrl();
	DBASSERT(!url.IsEmpty());

	this-&amp;gt;m_browser.LoadURL(url);
	this-&amp;gt;m_browser.DisableContextMenu();
	this-&amp;gt;RegisterAPIJavaScriptObject();
	this-&amp;gt;m_browser.onDownloading += DG::EventNotifier&amp;lt;DG::BrowserBase, DG::BrowserDownloadingArg, bool, true&amp;gt;::Runnable(&amp;amp;BrowserPalette::HandleDownloadingEvent);
}

bool BrowserPalette::HandleDownloadingEvent(const DG::BrowserBase&amp;amp; source, const DG::BrowserDownloadingArg &amp;amp;args)
{
	if (source.GetDefaultEventTarget() == nullptr)
		return false;

	if (args.isComplete)
	{
		return true;
	}
	return false;
}

Error:
error C2338: Second argument must be EventArg&amp;amp;!
error C2440: '&amp;lt;function-style-cast&amp;gt;': cannot convert from 'const std::function&amp;lt;bool (const DG::BrowserBase &amp;amp;,DG::BrowserDownloadingArg &amp;amp;)&amp;gt;' to 'DG::EventNotifier&amp;lt;DG::BrowserBase,const DG::BrowserDownloadingArg,bool,true&amp;gt;::RunnableHelper'
&lt;/LI-CODE&gt;&lt;BR /&gt;Kind Regards,&lt;BR /&gt;Chris&lt;/DIV&gt;</description>
    <pubDate>Tue, 14 Sep 2021 07:19:39 GMT</pubDate>
    <dc:creator>Chris Howell</dc:creator>
    <dc:date>2021-09-14T07:19:39Z</dc:date>
    <item>
      <title>EventNotifier for Browser Control</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/EventNotifier-for-Browser-Control/m-p/224750#M1691</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;Hi, Archicad dev teams&lt;BR /&gt;I am developing the Add-on in Archicad 24 using Browser control.&lt;BR /&gt;I tried to handle downloading event but I can't build the project.&lt;BR /&gt;Please help me.&lt;BR /&gt;&lt;BR /&gt;This is my code.&lt;BR /&gt;&lt;BR /&gt;&lt;LI-CODE lang="cpp"&gt;static bool HandleDownloadingEvent(const DG::BrowserBase&amp;amp; source, const DG::BrowserDownloadingArg &amp;amp;args);

void BrowserPalette::InitBrowserControl()
{
	GS::UniString url = this-&amp;gt;GetSiteUrl();
	DBASSERT(!url.IsEmpty());

	this-&amp;gt;m_browser.LoadURL(url);
	this-&amp;gt;m_browser.DisableContextMenu();
	this-&amp;gt;RegisterAPIJavaScriptObject();
	this-&amp;gt;m_browser.onDownloading += DG::EventNotifier&amp;lt;DG::BrowserBase, DG::BrowserDownloadingArg, bool, true&amp;gt;::Runnable(&amp;amp;BrowserPalette::HandleDownloadingEvent);
}

bool BrowserPalette::HandleDownloadingEvent(const DG::BrowserBase&amp;amp; source, const DG::BrowserDownloadingArg &amp;amp;args)
{
	if (source.GetDefaultEventTarget() == nullptr)
		return false;

	if (args.isComplete)
	{
		return true;
	}
	return false;
}

Error:
error C2338: Second argument must be EventArg&amp;amp;!
error C2440: '&amp;lt;function-style-cast&amp;gt;': cannot convert from 'const std::function&amp;lt;bool (const DG::BrowserBase &amp;amp;,DG::BrowserDownloadingArg &amp;amp;)&amp;gt;' to 'DG::EventNotifier&amp;lt;DG::BrowserBase,const DG::BrowserDownloadingArg,bool,true&amp;gt;::RunnableHelper'
&lt;/LI-CODE&gt;&lt;BR /&gt;Kind Regards,&lt;BR /&gt;Chris&lt;/DIV&gt;</description>
      <pubDate>Tue, 14 Sep 2021 07:19:39 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/EventNotifier-for-Browser-Control/m-p/224750#M1691</guid>
      <dc:creator>Chris Howell</dc:creator>
      <dc:date>2021-09-14T07:19:39Z</dc:date>
    </item>
    <item>
      <title>Re: EventNotifier for Browser Control</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/EventNotifier-for-Browser-Control/m-p/305029#M1692</link>
      <description>&lt;P&gt;Please try to add the event handler with Add instead of +=.&lt;/P&gt;
&lt;P&gt;And use a non static member function:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;&lt;LI-CODE lang="cpp"&gt;class BrowserPalette: ...,

{

    ...

    bool    HandleDownloadingEvent (const DG::BrowserBase&amp;amp; source, const DG::BrowserDownloadingArg&amp;amp; args);

};

BrowserPalette::BrowserPalette (...)

{

    browser.onDownloading.Add (&amp;amp;BrowserDialog::HandleDownloadingEvent, this);

}&lt;/LI-CODE&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 08 Sep 2021 19:11:21 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/EventNotifier-for-Browser-Control/m-p/305029#M1692</guid>
      <dc:creator>Miklos Vegh</dc:creator>
      <dc:date>2021-09-08T19:11:21Z</dc:date>
    </item>
  </channel>
</rss>

