Files
2026-08-16 18:24:52 +07:00

233 lines
23 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>VSTGUI: Standalone Library</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">VSTGUI<span id="projectnumber">&#160;4.10</span>
</div>
<div id="projectbrief">Graphical User Interface Framework not only for VST plugins</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('standalone_library.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">Standalone Library</div></div>
</div><!--header-->
<div class="contents">
<div class="toc"><h3>Table of Contents</h3>
<ul>
<li class="level1">
<a href="#standalone_about">About</a>
</li>
<li class="level1">
<a href="#standalone_modelbinding">Bindings</a>
</li>
<li class="level1">
<a href="#standalone_window_customization">Customization</a>
</li>
<li class="level1">
<a href="#standalone_supported_os">Supported operating systems</a>
</li>
<li class="level1">
<a href="#standalone_compiler_requirements">Compiler requirements</a>
</li>
</ul>
</div>
<div class="textblock"><h1><a class="anchor" id="standalone_about"></a>
About</h1>
<dl class="section note"><dt>Note</dt><dd>The Standalone Library is a preview. The API may change in the future !</dd></dl>
<p>The standalone library adds a minimal set of classes to write simple cross-platform UI applications. See <a class="el" href="group__standalone.html">this page</a> for a list of classes.</p>
<p>Here's a minimal sample just showing one window:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;vstgui/standalone/include/iapplication.h&quot;</span></div>
<div class="line"><span class="preprocessor">#include &quot;vstgui/standalone/include/iuidescwindow.h&quot;</span></div>
<div class="line"><span class="preprocessor">#include &quot;vstgui/standalone/include/helpers/appdelegate.h&quot;</span></div>
<div class="line"><span class="preprocessor">#include &quot;vstgui/standalone/include/helpers/windowlistener.h&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keyword">using namespace </span><a class="code hl_namespace" href="namespace_v_s_t_g_u_i_1_1_standalone.html">VSTGUI::Standalone</a>;</div>
<div class="line"><span class="keyword">using namespace </span><a class="code hl_namespace" href="namespace_v_s_t_g_u_i_1_1_standalone_1_1_application.html">VSTGUI::Standalone::Application</a>;</div>
<div class="line"> </div>
<div class="line"><span class="keyword">class </span>MyApplication : <span class="keyword">public</span> <a class="code hl_class" href="class_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_delegate_adapter.html">DelegateAdapter</a>, <span class="keyword">public</span> <a class="code hl_class" href="class_v_s_t_g_u_i_1_1_standalone_1_1_window_listener_adapter.html">WindowListenerAdapter</a></div>
<div class="line">{</div>
<div class="line"><span class="keyword">public</span>:</div>
<div class="line"> MyApplication ()</div>
<div class="line"> : <a class="code hl_class" href="class_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_delegate_adapter.html">DelegateAdapter</a> ({<span class="stringliteral">&quot;simple_standalone&quot;</span>, <span class="stringliteral">&quot;1.0.0&quot;</span>, <span class="stringliteral">&quot;com.mycompany.simplestandalone&quot;</span>})</div>
<div class="line"> {}</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">void</span> finishLaunching ()<span class="keyword"> override</span></div>
<div class="line"><span class="keyword"> </span>{</div>
<div class="line"> UIDesc::Config config;</div>
<div class="line"> config.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#a738d31f7ed30f4c0c8f0467146a72a21">uiDescFileName</a> = <span class="stringliteral">&quot;Window.uidesc&quot;</span>;</div>
<div class="line"> config.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#aa2ba01b9ce98322b1207b09e13d4cae6">viewName</a> = <span class="stringliteral">&quot;Window&quot;</span>;</div>
<div class="line"> config.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#aca0d6bfe279af0abacbe7b1c525dadbe">windowConfig</a>.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration.html#a079f062c4955dddcbe528b0b9e00d6e5">title</a> = <span class="stringliteral">&quot;Sample App&quot;</span>;</div>
<div class="line"> config.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#aca0d6bfe279af0abacbe7b1c525dadbe">windowConfig</a>.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration.html#a5056387eadafc7e6edd8159c0ed5b549">autoSaveFrameName</a> = <span class="stringliteral">&quot;SampleAppWindow&quot;</span>;</div>
<div class="line"> config.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#aca0d6bfe279af0abacbe7b1c525dadbe">windowConfig</a>.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration.html#a68752b222317b1e1103966106fb006e5">style</a>.<a class="code hl_function" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#a656f04cb2701691961e4c83c6d24ed07">border</a> ().<a class="code hl_function" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#afc7c9e143ba5c58c2983ea2dbcf2ff34">close</a> ().<a class="code hl_function" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#afdfd2f48006439226fbc15e5541a88a6">size</a> ().<a class="code hl_function" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#aea455e0193caba8ceb22dd6f5e005d1e">centered</a> ();</div>
<div class="line"> <span class="keywordflow">if</span> (<span class="keyword">auto</span> window = UIDesc::makeWindow (config))</div>
<div class="line"> {</div>
<div class="line"> window-&gt;show ();</div>
<div class="line"> window-&gt;registerWindowListener (<span class="keyword">this</span>);</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span></div>
<div class="line"> {</div>
<div class="line"> IApplication::instance ().quit ();</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordtype">void</span> onClosed (<span class="keyword">const</span> IWindow&amp; window)<span class="keyword"> override</span></div>
<div class="line"><span class="keyword"> </span>{</div>
<div class="line"> IApplication::instance ().quit ();</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line">};</div>
<div class="line"> </div>
<div class="line"><span class="keyword">static</span> <a class="code hl_struct" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_init.html">Init</a> gAppDelegate (std::make_unique&lt;MyApplication&gt; ());</div>
<div class="ttc" id="aclass_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_delegate_adapter_html"><div class="ttname"><a href="class_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_delegate_adapter.html">VSTGUI::Standalone::Application::DelegateAdapter</a></div><div class="ttdoc">Application delegate adapter</div><div class="ttdef"><b>Definition</b> appdelegate.h:20</div></div>
<div class="ttc" id="aclass_v_s_t_g_u_i_1_1_standalone_1_1_window_listener_adapter_html"><div class="ttname"><a href="class_v_s_t_g_u_i_1_1_standalone_1_1_window_listener_adapter.html">VSTGUI::Standalone::WindowListenerAdapter</a></div><div class="ttdoc">Window listener adapter</div><div class="ttdef"><b>Definition</b> windowlistener.h:20</div></div>
<div class="ttc" id="anamespace_v_s_t_g_u_i_1_1_standalone_1_1_application_html"><div class="ttname"><a href="namespace_v_s_t_g_u_i_1_1_standalone_1_1_application.html">VSTGUI::Standalone::Application</a></div><div class="ttdef"><b>Definition</b> appinit.h:12</div></div>
<div class="ttc" id="anamespace_v_s_t_g_u_i_1_1_standalone_html"><div class="ttname"><a href="namespace_v_s_t_g_u_i_1_1_standalone.html">VSTGUI::Standalone</a></div><div class="ttdoc">Standalone Library</div><div class="ttdef"><b>Definition</b> appinit.h:11</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_init_html"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_application_1_1_init.html">VSTGUI::Standalone::Application::Init</a></div><div class="ttdoc">Init application.</div><div class="ttdef"><b>Definition</b> appinit.h:90</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config_html_a738d31f7ed30f4c0c8f0467146a72a21"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#a738d31f7ed30f4c0c8f0467146a72a21">VSTGUI::Standalone::UIDesc::Config::uiDescFileName</a></div><div class="ttdeci">UTF8String uiDescFileName</div><div class="ttdoc">Filename of the UIDescription xml file.</div><div class="ttdef"><b>Definition</b> iuidescwindow.h:72</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config_html_aa2ba01b9ce98322b1207b09e13d4cae6"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#aa2ba01b9ce98322b1207b09e13d4cae6">VSTGUI::Standalone::UIDesc::Config::viewName</a></div><div class="ttdeci">UTF8String viewName</div><div class="ttdoc">Template name of the view in the uidesc file to show in the window.</div><div class="ttdef"><b>Definition</b> iuidescwindow.h:75</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config_html_aca0d6bfe279af0abacbe7b1c525dadbe"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#aca0d6bfe279af0abacbe7b1c525dadbe">VSTGUI::Standalone::UIDesc::Config::windowConfig</a></div><div class="ttdeci">WindowConfiguration windowConfig</div><div class="ttdoc">Window configuration.</div><div class="ttdef"><b>Definition</b> iuidescwindow.h:78</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration_html_a079f062c4955dddcbe528b0b9e00d6e5"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration.html#a079f062c4955dddcbe528b0b9e00d6e5">VSTGUI::Standalone::WindowConfiguration::title</a></div><div class="ttdeci">UTF8String title</div><div class="ttdoc">Window title.</div><div class="ttdef"><b>Definition</b> iwindow.h:145</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration_html_a5056387eadafc7e6edd8159c0ed5b549"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration.html#a5056387eadafc7e6edd8159c0ed5b549">VSTGUI::Standalone::WindowConfiguration::autoSaveFrameName</a></div><div class="ttdeci">UTF8String autoSaveFrameName</div><div class="ttdoc">Window save frame name.</div><div class="ttdef"><b>Definition</b> iwindow.h:147</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration_html_a68752b222317b1e1103966106fb006e5"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_configuration.html#a68752b222317b1e1103966106fb006e5">VSTGUI::Standalone::WindowConfiguration::style</a></div><div class="ttdeci">WindowStyle style</div><div class="ttdoc">Window style.</div><div class="ttdef"><b>Definition</b> iwindow.h:141</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_style_html_a656f04cb2701691961e4c83c6d24ed07"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#a656f04cb2701691961e4c83c6d24ed07">VSTGUI::Standalone::WindowStyle::border</a></div><div class="ttdeci">WindowStyle &amp; border()</div><div class="ttdef"><b>Definition</b> iwindow.h:89</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_style_html_aea455e0193caba8ceb22dd6f5e005d1e"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#aea455e0193caba8ceb22dd6f5e005d1e">VSTGUI::Standalone::WindowStyle::centered</a></div><div class="ttdeci">WindowStyle &amp; centered()</div><div class="ttdef"><b>Definition</b> iwindow.h:114</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_style_html_afc7c9e143ba5c58c2983ea2dbcf2ff34"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#afc7c9e143ba5c58c2983ea2dbcf2ff34">VSTGUI::Standalone::WindowStyle::close</a></div><div class="ttdeci">WindowStyle &amp; close()</div><div class="ttdef"><b>Definition</b> iwindow.h:94</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_window_style_html_afdfd2f48006439226fbc15e5541a88a6"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_window_style.html#afdfd2f48006439226fbc15e5541a88a6">VSTGUI::Standalone::WindowStyle::size</a></div><div class="ttdeci">WindowStyle &amp; size()</div><div class="ttdef"><b>Definition</b> iwindow.h:99</div></div>
</div><!-- fragment --><p>Adding a real user interface to the window is done via a "What You See Is What You Get" editor at runtime as known from the VST3 inline editor. Bindings are done via the <a class="el" href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_i_model_binding.html">IModelBinding </a> interface.</p>
<h1><a class="anchor" id="standalone_modelbinding"></a>
Bindings</h1>
<p>Binding the user interface with your code is done via <a class="el" href="class_v_s_t_g_u_i_1_1_standalone_1_1_i_value.html">IValue </a> objects. A list of value objects are exposed via an object that implements the <a class="el" href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_i_model_binding.html">IModelBinding </a> interface.</p>
<p>As an example implementation there is the <a class="el" href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_model_binding_callbacks.html">ModelBindingCallbacks </a> class in the helpers sub directory. For example you want to have a button in the UI which triggers a function, you can implement it like this :</p>
<div class="fragment"><div class="line"><span class="keyword">auto</span> binding = <a class="code hl_function" href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_model_binding_callbacks.html#ab9d971e58bdb7bc6e007228f575638a1">UIDesc::ModelBindingCallbacks::make</a> ();</div>
<div class="line">binding-&gt;addValue (<a class="code hl_function" href="namespace_v_s_t_g_u_i_1_1_standalone_1_1_value.html#aa818fcb1061f480511e29492dfd2d576">Value::make</a> (<span class="stringliteral">&quot;MyFunction&quot;</span>),</div>
<div class="line"> <a class="code hl_function" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_value_calls.html#a6e859de0af108f29de36b80df7ddc78e">UIDesc::ValueCalls::onAction</a> ([&amp;] (<a class="code hl_class" href="class_v_s_t_g_u_i_1_1_standalone_1_1_i_value.html">IValue</a>&amp; v) {</div>
<div class="line"> executeMyFunction ();</div>
<div class="line"> }));</div>
<div class="line">config.<a class="code hl_variable" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#a6897c2efb803dfa7bcf2274b9e7f1c8f">modelBinding</a> = binding;</div>
<div class="ttc" id="aclass_v_s_t_g_u_i_1_1_standalone_1_1_i_value_html"><div class="ttname"><a href="class_v_s_t_g_u_i_1_1_standalone_1_1_i_value.html">VSTGUI::Standalone::IValue</a></div><div class="ttdoc">Value interface.</div><div class="ttdef"><b>Definition</b> ivalue.h:21</div></div>
<div class="ttc" id="aclass_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_model_binding_callbacks_html_ab9d971e58bdb7bc6e007228f575638a1"><div class="ttname"><a href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_model_binding_callbacks.html#ab9d971e58bdb7bc6e007228f575638a1">VSTGUI::Standalone::UIDesc::ModelBindingCallbacks::make</a></div><div class="ttdeci">static ModelBindingCallbacksPtr make()</div><div class="ttdef"><b>Definition</b> modelbinding.h:60</div></div>
<div class="ttc" id="anamespace_v_s_t_g_u_i_1_1_standalone_1_1_value_html_aa818fcb1061f480511e29492dfd2d576"><div class="ttname"><a href="namespace_v_s_t_g_u_i_1_1_standalone_1_1_value.html#aa818fcb1061f480511e29492dfd2d576">VSTGUI::Standalone::Value::make</a></div><div class="ttdeci">ValuePtr make(const UTF8String &amp;id, IValue::Type initialValue=0., const ValueConverterPtr &amp;valueConverter=nullptr)</div><div class="ttdoc">make a value in the normalized range [0..1]</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config_html_a6897c2efb803dfa7bcf2274b9e7f1c8f"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#a6897c2efb803dfa7bcf2274b9e7f1c8f">VSTGUI::Standalone::UIDesc::Config::modelBinding</a></div><div class="ttdeci">ModelBindingPtr modelBinding</div><div class="ttdoc">Model binding.</div><div class="ttdef"><b>Definition</b> iuidescwindow.h:86</div></div>
<div class="ttc" id="astruct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_value_calls_html_a6e859de0af108f29de36b80df7ddc78e"><div class="ttname"><a href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_value_calls.html#a6e859de0af108f29de36b80df7ddc78e">VSTGUI::Standalone::UIDesc::ValueCalls::onAction</a></div><div class="ttdeci">static ValueCalls onAction(Call &amp;&amp;call)</div><div class="ttdef"><b>Definition</b> modelbinding.h:41</div></div>
</div><!-- fragment --><p>After you have set the binding as the <a class="el" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#a6897c2efb803dfa7bcf2274b9e7f1c8f">UIDesc::Config::modelBinding </a> parameter when you create the window, you can start your program, enable the inline editor, create a button and bind that button to the "control-tag" of "MyFunction" as written in the above code. When the button is clicked, the function 'executeMyFunction' is called.</p>
<h1><a class="anchor" id="standalone_window_customization"></a>
Customization</h1>
<p>If you need deeper control of the UI you can supply an object implementing the <a class="el" href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_i_customization.html">ICustomization </a> interface as the <a class="el" href="struct_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_config.html#a22d27b88e8c638962ede64fc0cf9ee85">UIDesc::Config::customization </a> parameter. In the UI editor you can set the 'sub-controller' attribute of a view container to create a new <a class="el" href="class_v_s_t_g_u_i_1_1_i_controller.html">IController </a> object out of your <a class="el" href="class_v_s_t_g_u_i_1_1_standalone_1_1_u_i_desc_1_1_i_customization.html">ICustomization </a> object. This controller can alter the UI in many ways, it can even create custom views if you don't want to use the way described in <a class="el" href="class_v_s_t_g_u_i_1_1_i_view_creator.html">IViewCreator </a> to support the view inside the UI editor.</p>
<h1><a class="anchor" id="standalone_supported_os"></a>
Supported operating systems</h1>
<ul>
<li>Microsoft Windows 64bit<ul>
<li>minimum supported version : 7</li>
</ul>
</li>
<li>Apple macOS 64bit<ul>
<li>minimum supported version : 10.10</li>
</ul>
</li>
</ul>
<h1><a class="anchor" id="standalone_compiler_requirements"></a>
Compiler requirements</h1>
<p>To compile and use the library you need a compiler supporting most of c++14.</p>
<p>As of this writing the following compilers work (others not tested):</p><ul>
<li>Visual Studio 15</li>
<li>Xcode 7.3 </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Mon Oct 20 2025 17:24:33 for VSTGUI by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>