<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://win32.pub/blog</id>
    <title>win32 Blog</title>
    <updated>2024-07-10T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://win32.pub/blog"/>
    <subtitle>A resource for package:win32, Flutter and Dart ecosystem, and Windows development.</subtitle>
    <rights>Copyright © 2026 • Halil Durmus</rights>
    <entry>
        <title type="html"><![CDATA[Calling Windows APIs in Dart with win32]]></title>
        <id>https://win32.pub/blog/calling-windows-apis</id>
        <link href="https://win32.pub/blog/calling-windows-apis"/>
        <updated>2024-07-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how to call Windows APIs in Dart with the win32 package. Start with simple examples and explore its wide range of applications.]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="https://win32.pub/blog/calling-windows-apis#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h2>
<p>As Dart expands its reach beyond web and mobile development, interacting with
native Windows APIs unlocks a world of possibilities.</p>
<p><a href="https://pub.dev/packages/win32" target="_blank" rel="noopener noreferrer" class=""><code>package:win32</code></a> serves as a bridge to the powerful features of
the Windows operating system, allowing Dart developers to harness these
capabilities directly in their applications.</p>
<p>In this blog post, we'll explore how to use <code>package:win32</code> to call Windows APIs
in Dart, enabling you to create powerful Windows applications with ease.</p>
<p>Here's what we'll cover:</p>
<ul>
<li class=""><a href="https://win32.pub/blog/calling-windows-apis#getting-started" class="">Getting Started</a></li>
<li class=""><a href="https://win32.pub/blog/calling-windows-apis#interacting-with-windows-apis" class="">Interacting with Windows APIs</a>
<ul>
<li class=""><a href="https://win32.pub/blog/calling-windows-apis#displaying-a-message-box" class="">Displaying a Message Box</a></li>
<li class=""><a href="https://win32.pub/blog/calling-windows-apis#retrieving-the-system-memory" class="">Retrieving the System Memory</a></li>
<li class=""><a href="https://win32.pub/blog/calling-windows-apis#creating-a-classic-win32-window" class="">Creating a Classic Win32 Window</a></li>
</ul>
</li>
<li class=""><a href="https://win32.pub/blog/calling-windows-apis#conclusion" class="">Conclusion</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://win32.pub/blog/calling-windows-apis#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Let's dive into how you can get started with <code>package:win32</code> package and see it
in action.</p>
<p>Add the <strong>ffi</strong> and <strong>win32</strong> packages to your project with:</p>
<div class="win32-common-code-block language-cmd rounded-lg bg-win32-react-light-code dark:bg-win32-react-dark-code border border-gray-300 dark:border-0 mb-6 relative win32-wider-container"><div class="py-3 px-4 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 text-xs flex items-center gap-2 rounded-tl-lg rounded-tr-lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="20" width="20" xmlns="http://www.w3.org/2000/svg"><path fill="none" stroke-linejoin="round" stroke-width="32" d="M416 221.25V416a48 48 0 0 1-48 48H144a48 48 0 0 1-48-48V96a48 48 0 0 1 48-48h98.75a32 32 0 0 1 22.62 9.37l141.26 141.26a32 32 0 0 1 9.37 22.62z"></path><path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M256 56v120a32 32 0 0 0 32 32h120m-232 80h160m-160 80h160"></path></svg>Terminal</div><div class="relative pt-3 pb-0 not-prose"><pre tabindex="0" class="prism-code language-cmd bg-transparent !mt-0 !mb-0 m-0 px-0 pt-0 font-jetBrains-mono pb-3"><code class="font-[inherit] bg-transparent inline-block min-w-full"><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">dart pub add ffi win32</span><br></span></code></pre></div><div class="absolute top-2 right-2 flex items-center gap-2"><button type="button" aria-label="Copy code to clipboard" title="Copy code to clipboard" class="w-6 h-6 flex justify-center items-center bg-gray-200 dark:bg-gray-800 hover:bg-gray-300 dark:hover:bg-win32-react-dark-code rounded group transition-[background-color] duration-200 ease-in-out"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3 text-gray-500 dark:text-gray-400 transition-all duration-200 ease-in-out" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg></button></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="interacting-with-windows-apis">Interacting with Windows APIs<a href="https://win32.pub/blog/calling-windows-apis#interacting-with-windows-apis" class="hash-link" aria-label="Direct link to Interacting with Windows APIs" title="Direct link to Interacting with Windows APIs" translate="no">​</a></h2>
<p>Let's explore how you can interact with the Windows APIs using <code>package:win32</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="displaying-a-message-box">Displaying a Message Box<a href="https://win32.pub/blog/calling-windows-apis#displaying-a-message-box" class="hash-link" aria-label="Direct link to Displaying a Message Box" title="Direct link to Displaying a Message Box" translate="no">​</a></h3>
<p>Let's start with a simple example that displays a message box using the
<a href="https://learn.microsoft.com/windows/win32/api/winuser/nf-winuser-messagebox" target="_blank" rel="noopener noreferrer" class=""><code>MessageBox</code></a> function from the Windows API.</p>
<div class="win32-common-code-block language-dart rounded-lg bg-win32-react-light-code dark:bg-win32-react-dark-code border border-gray-300 dark:border-0 mb-6 relative win32-wider-container"><div class="relative pt-3 pb-0 not-prose"><pre tabindex="0" class="prism-code language-dart bg-transparent !mt-0 !mb-0 m-0 px-0 pt-0 font-jetBrains-mono pb-3"><code class="font-[inherit] bg-transparent inline-block min-w-full"><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'package:ffi/ffi.dart'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'package:win32/win32.dart'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">using</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">arena</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> </span><span class="token class-name">Win32Result</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">MessageBox</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      arena</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">pcwstr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-literal string" style="color:#e3116c">'Hello from Dart'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      arena</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">pcwstr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-literal string" style="color:#e3116c">'Dart Win32 MessageBox Demo'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      MB_OK </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> MB_ICONINFORMATION</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">switch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> IDOK</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">        </span><span class="token function" style="color:#d73a49">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-literal string" style="color:#e3116c">'OK pressed'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">throw</span><span class="token plain"> </span><span class="token class-name">WindowsException</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">toHRESULT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div><div class="absolute top-3 right-3 flex items-center gap-2"><button type="button" aria-label="Copy code to clipboard" title="Copy code to clipboard" class="w-6 h-6 flex justify-center items-center bg-gray-200 dark:bg-gray-800 hover:bg-gray-300 dark:hover:bg-win32-react-dark-code rounded group transition-[background-color] duration-200 ease-in-out"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3 text-gray-500 dark:text-gray-400 transition-all duration-200 ease-in-out" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg></button></div></div>
<p><img decoding="async" loading="lazy" alt="MessageBox" src="data:image/png;base64,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" width="410" height="185" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="retrieving-the-system-memory">Retrieving the System Memory<a href="https://win32.pub/blog/calling-windows-apis#retrieving-the-system-memory" class="hash-link" aria-label="Direct link to Retrieving the System Memory" title="Direct link to Retrieving the System Memory" translate="no">​</a></h3>
<p>Next, let's retrieve the total amount of physical memory installed on the
system using the
<a href="https://docs.microsoft.com/windows/win32/api/sysinfoapi/nf-sysinfoapi-getphysicallyinstalledsystemmemory" target="_blank" rel="noopener noreferrer" class=""><code>GetPhysicallyInstalledSystemMemory</code></a>
function.</p>
<div class="win32-common-code-block language-dart rounded-lg bg-win32-react-light-code dark:bg-win32-react-dark-code border border-gray-300 dark:border-0 mb-6 relative win32-wider-container"><div class="py-3 px-4 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 text-xs flex items-center gap-2 rounded-tl-lg rounded-tr-lg"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path fill="#01579B" d="M5.013 18.936.996 14.92c-.476-.489-.772-1.18-.772-1.854 0-.312.176-.801.309-1.082l3.708-7.725z"></path><path fill="#40C4FF" d="m18.764 5.032-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259zM9.803 23.726h9.733v-4.172l-7.261-2.317-6.644 2.317Z"></path><path fill="#29B6F6" d="M4.241 16.773c0 1.239.155 1.543.772 2.163l.618.618h13.905l-6.798-7.724-8.497-7.571z"></path><path fill="#01579B" d="M16.601 4.259H4.241l15.295 15.295h4.171V9.976l-4.943-4.944c-.694-.697-1.311-.772-2.163-.772"></path><path opacity=".2" fill="#FFF" d="M5.168 19.091c-.618-.62-.772-1.232-.772-2.318V4.414l-.154-.154v12.513c0 1.086 0 1.387.927 2.318l.464.464z"></path><path opacity=".2" fill="#263238" d="M23.553 9.821V19.4h-4.171l.154.154h4.172V9.976Z"></path><path opacity=".2" fill="#FFF" d="M18.764 5.032c-.766-.766-1.394-.772-2.318-.772H4.241l.154.154h12.051c.462 0 1.625-.077 2.318.618"></path><radialGradient id="a" cx="538.463" cy="539.28" r="528.383" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0.1"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></radialGradient><path opacity=".2" fill="url(#a)" d="m23.553 9.821-4.789-4.789-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259.533 11.984c-.132.281-.309.769-.309 1.082 0 .674.297 1.365.772 1.854l3.702 3.675c.089.108.192.219.315.342l.154.154.464.464 4.017 4.017.154.154h9.733v-4.172h4.171V9.976z"></path></svg>sysinfo.dart</div><div class="relative pt-3 pb-0 not-prose"><pre tabindex="0" class="prism-code language-dart bg-transparent !mt-0 !mb-0 m-0 px-0 pt-0 font-jetBrains-mono pb-3"><code class="font-[inherit] bg-transparent inline-block min-w-full"><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token class-name">String</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">getSystemMemorySize</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">using</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">arena</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> lpMemorySize </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> arena</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics">ULONGLONG</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> </span><span class="token class-name">Win32Result</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">GetPhysicallyInstalledSystemMemory</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      lpMemorySize</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">!</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">throw</span><span class="token plain"> </span><span class="token class-name">WindowsException</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">toHRESULT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> lpMemorySize</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">value </span><span class="token operator" style="color:#393A34">~/</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1024</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div><div class="absolute top-2 right-2 flex items-center gap-2"><button type="button" aria-label="Copy code to clipboard" title="Copy code to clipboard" class="w-6 h-6 flex justify-center items-center bg-gray-200 dark:bg-gray-800 hover:bg-gray-300 dark:hover:bg-win32-react-dark-code rounded group transition-[background-color] duration-200 ease-in-out"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3 text-gray-500 dark:text-gray-400 transition-all duration-200 ease-in-out" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg></button></div></div>
<div class="win32-wider-container py-2 px-2 flex items-center gap-2 rounded-lg font-sans text-base bg-gray-100 dark:bg-gray-700 mb-6"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" class="ml-1.5 w-6 h-6 text-gray-700 dark:text-gray-100" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg><a href="https://github.com/halildurmus/win32/blob/main/examples/sysinfo.dart" target="_blank" rel="noopener noreferrer" class="text-base leading-8 text-win32-react-light-link dark:text-win32-react-dark-link"><span>View Source Code</span></a></div>
<p><img decoding="async" loading="lazy" alt="System Memory" src="data:image/png;base64,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" width="466" height="96" class="img_ev3q"></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="creating-a-classic-win32-window">Creating a Classic Win32 Window<a href="https://win32.pub/blog/calling-windows-apis#creating-a-classic-win32-window" class="hash-link" aria-label="Direct link to Creating a Classic Win32 Window" title="Direct link to Creating a Classic Win32 Window" translate="no">​</a></h3>
<p>Finally, let's create a classic Win32 window. First, we'll define the window
procedure that will handle messages sent to the window.</p>
<div class="win32-common-code-block language-dart rounded-lg bg-win32-react-light-code dark:bg-win32-react-dark-code border border-gray-300 dark:border-0 mb-6 relative win32-wider-container"><div class="py-3 px-4 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 text-xs flex items-center gap-2 rounded-tl-lg rounded-tr-lg"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path fill="#01579B" d="M5.013 18.936.996 14.92c-.476-.489-.772-1.18-.772-1.854 0-.312.176-.801.309-1.082l3.708-7.725z"></path><path fill="#40C4FF" d="m18.764 5.032-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259zM9.803 23.726h9.733v-4.172l-7.261-2.317-6.644 2.317Z"></path><path fill="#29B6F6" d="M4.241 16.773c0 1.239.155 1.543.772 2.163l.618.618h13.905l-6.798-7.724-8.497-7.571z"></path><path fill="#01579B" d="M16.601 4.259H4.241l15.295 15.295h4.171V9.976l-4.943-4.944c-.694-.697-1.311-.772-2.163-.772"></path><path opacity=".2" fill="#FFF" d="M5.168 19.091c-.618-.62-.772-1.232-.772-2.318V4.414l-.154-.154v12.513c0 1.086 0 1.387.927 2.318l.464.464z"></path><path opacity=".2" fill="#263238" d="M23.553 9.821V19.4h-4.171l.154.154h4.172V9.976Z"></path><path opacity=".2" fill="#FFF" d="M18.764 5.032c-.766-.766-1.394-.772-2.318-.772H4.241l.154.154h12.051c.462 0 1.625-.077 2.318.618"></path><radialGradient id="a" cx="538.463" cy="539.28" r="528.383" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0.1"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></radialGradient><path opacity=".2" fill="url(#a)" d="m23.553 9.821-4.789-4.789-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259.533 11.984c-.132.281-.309.769-.309 1.082 0 .674.297 1.365.772 1.854l3.702 3.675c.089.108.192.219.315.342l.154.154.464.464 4.017 4.017.154.154h9.733v-4.172h4.171V9.976z"></path></svg>hello.dart</div><div class="relative pt-3 pb-0 not-prose"><pre tabindex="0" class="prism-code language-dart bg-transparent !mt-0 !mb-0 m-0 px-0 pt-0 font-jetBrains-mono pb-3"><code class="font-[inherit] bg-transparent inline-block min-w-full"><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'dart:ffi'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'package:ffi/ffi.dart'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'package:ffi_leak_tracker/ffi_leak_tracker.dart'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'package:win32/win32.dart'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">int </span><span class="token function" style="color:#d73a49">mainWindowProc</span><span class="token punctuation" style="color:#393A34">(</span><span class="token class-name">Pointer</span><span class="token plain"> hWnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> int uMsg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> int wParam</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> int lParam</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> hwnd </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">HWND</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hWnd</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">switch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">uMsg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> WM_DESTROY</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token class-name">PostQuitMessage</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">case</span><span class="token plain"> WM_PAINT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> ps </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> adaptiveCalloc</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics">PAINTSTRUCT</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> hdc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">BeginPaint</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hwnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ps</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> rect </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> adaptiveCalloc</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics">RECT</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> msg </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string-literal string" style="color:#e3116c">'Hello, Dart!'</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">toPcwstr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token class-name">GetClientRect</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hwnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> rect</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token class-name">DrawText</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hdc</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> msg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> rect</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> DT_CENTER </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> DT_VCENTER </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> DT_SINGLELINE</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token class-name">EndPaint</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hwnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ps</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token function" style="color:#d73a49">free</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">msg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token function" style="color:#d73a49">free</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rect</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token function" style="color:#d73a49">free</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">ps</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token class-name">DefWindowProc</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hwnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> uMsg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">.</span><span class="token keyword" style="color:#00009f">new</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">wParam</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">.</span><span class="token keyword" style="color:#00009f">new</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">lParam</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div><div class="absolute top-2 right-2 flex items-center gap-2"><button type="button" aria-label="Copy code to clipboard" title="Copy code to clipboard" class="w-6 h-6 flex justify-center items-center bg-gray-200 dark:bg-gray-800 hover:bg-gray-300 dark:hover:bg-win32-react-dark-code rounded group transition-[background-color] duration-200 ease-in-out"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3 text-gray-500 dark:text-gray-400 transition-all duration-200 ease-in-out" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg></button></div></div>
<p>Next, we'll define the <code>winMain</code> entry point, which creates the window and runs
the message loop.</p>
<div class="win32-common-code-block language-dart rounded-lg bg-win32-react-light-code dark:bg-win32-react-dark-code border border-gray-300 dark:border-0 mb-6 relative win32-wider-container"><div class="py-3 px-4 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 text-xs flex items-center gap-2 rounded-tl-lg rounded-tr-lg"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path fill="#01579B" d="M5.013 18.936.996 14.92c-.476-.489-.772-1.18-.772-1.854 0-.312.176-.801.309-1.082l3.708-7.725z"></path><path fill="#40C4FF" d="m18.764 5.032-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259zM9.803 23.726h9.733v-4.172l-7.261-2.317-6.644 2.317Z"></path><path fill="#29B6F6" d="M4.241 16.773c0 1.239.155 1.543.772 2.163l.618.618h13.905l-6.798-7.724-8.497-7.571z"></path><path fill="#01579B" d="M16.601 4.259H4.241l15.295 15.295h4.171V9.976l-4.943-4.944c-.694-.697-1.311-.772-2.163-.772"></path><path opacity=".2" fill="#FFF" d="M5.168 19.091c-.618-.62-.772-1.232-.772-2.318V4.414l-.154-.154v12.513c0 1.086 0 1.387.927 2.318l.464.464z"></path><path opacity=".2" fill="#263238" d="M23.553 9.821V19.4h-4.171l.154.154h4.172V9.976Z"></path><path opacity=".2" fill="#FFF" d="M18.764 5.032c-.766-.766-1.394-.772-2.318-.772H4.241l.154.154h12.051c.462 0 1.625-.077 2.318.618"></path><radialGradient id="a" cx="538.463" cy="539.28" r="528.383" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0.1"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></radialGradient><path opacity=".2" fill="url(#a)" d="m23.553 9.821-4.789-4.789-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259.533 11.984c-.132.281-.309.769-.309 1.082 0 .674.297 1.365.772 1.854l3.702 3.675c.089.108.192.219.315.342l.154.154.464.464 4.017 4.017.154.154h9.733v-4.172h4.171V9.976z"></path></svg>hello.dart</div><div class="relative pt-3 pb-0 not-prose"><pre tabindex="0" class="prism-code language-dart bg-transparent !mt-0 !mb-0 m-0 px-0 pt-0 font-jetBrains-mono pb-3"><code class="font-[inherit] bg-transparent inline-block min-w-full"><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">winMain</span><span class="token punctuation" style="color:#393A34">(</span><span class="token class-name">HINSTANCE</span><span class="token plain"> hInstance</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token class-name">List</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics class-name">String</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token class-name">SHOW_WINDOW_CMD</span><span class="token plain"> nShowCmd</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token function" style="color:#d73a49">using</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">arena</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> lpfnWndProc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">NativeCallable</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics">WNDPROC</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">isolateLocal</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      mainWindowProc</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      exceptionalReturn</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> className </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> arena</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">pcwstr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-literal string" style="color:#e3116c">'Sample Window Class'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> wc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> arena</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics">WNDCLASS</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    wc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ref</span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">style </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> CS_HREDRAW </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> CS_VREDRAW</span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">lpfnWndProc </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> lpfnWndProc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">nativeFunction</span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">hInstance </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> hInstance</span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">lpszClassName </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">.</span><span class="token keyword" style="color:#00009f">new</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">className</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">hCursor </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">LoadCursor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> IDC_ARROW</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">value</span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">.</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">hbrBackground </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">.</span><span class="token keyword" style="color:#00009f">new</span><span class="token punctuation" style="color:#393A34">(</span><span class="token class-name">GetStockObject</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">WHITE_BRUSH</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">RegisterClass</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">wc</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">value </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">throw</span><span class="token plain"> </span><span class="token class-name">WindowsException</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">toHRESULT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Create the window.</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> windowCaption </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> arena</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">pcwstr</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-literal string" style="color:#e3116c">'Dart Native Win32 window'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> </span><span class="token class-name">Win32Result</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> hWnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token class-name">CreateWindowEx</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      WS_EX_LEFT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Optional window styles.</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      className</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Window class</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      windowCaption</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Window caption</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      WS_OVERLAPPEDWINDOW</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Window style</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic">// Size and position</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      CW_USEDEFAULT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      CW_USEDEFAULT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      CW_USEDEFAULT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      CW_USEDEFAULT</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Parent window</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Menu</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      hInstance</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Instance handle</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Additional application data</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hWnd</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">isNull</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">throw</span><span class="token plain"> </span><span class="token class-name">WindowsException</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">toHRESULT</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">ShowWindow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hWnd</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> nShowCmd</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">UpdateWindow</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hWnd</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Run the message loop.</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">final</span><span class="token plain"> msg </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> arena</span><span class="token generics punctuation" style="color:#393A34">&lt;</span><span class="token generics">MSG</span><span class="token generics punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">while</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token class-name">GetMessage</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">msg</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">value</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token class-name">TranslateMessage</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">msg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">      </span><span class="token class-name">DispatchMessage</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">msg</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    </span><span class="token class-name">UnregisterClass</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">className</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hInstance</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">    lpfnWndProc</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">close</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div><div class="absolute top-2 right-2 flex items-center gap-2"><button type="button" aria-label="Copy code to clipboard" title="Copy code to clipboard" class="w-6 h-6 flex justify-center items-center bg-gray-200 dark:bg-gray-800 hover:bg-gray-300 dark:hover:bg-win32-react-dark-code rounded group transition-[background-color] duration-200 ease-in-out"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3 text-gray-500 dark:text-gray-400 transition-all duration-200 ease-in-out" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg></button></div></div>
<p>Finally, we'll define the <code>main()</code> function to initialize the application and
call the <code>winMain()</code> function. The <code>package:win32</code> provides the
<a href="https://pub.dev/documentation/win32/latest/win32/initApp.html" target="_blank" rel="noopener noreferrer" class=""><code>initApp</code></a> helper function, which sets up the WinMain function with
all the necessary information, including the entry point and command line
arguments, simplifying the process for you.</p>
<div class="win32-common-code-block language-dart rounded-lg bg-win32-react-light-code dark:bg-win32-react-dark-code border border-gray-300 dark:border-0 mb-6 relative win32-wider-container"><div class="py-3 px-4 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 text-xs flex items-center gap-2 rounded-tl-lg rounded-tr-lg"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24"><path fill="#01579B" d="M5.013 18.936.996 14.92c-.476-.489-.772-1.18-.772-1.854 0-.312.176-.801.309-1.082l3.708-7.725z"></path><path fill="#40C4FF" d="m18.764 5.032-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259zM9.803 23.726h9.733v-4.172l-7.261-2.317-6.644 2.317Z"></path><path fill="#29B6F6" d="M4.241 16.773c0 1.239.155 1.543.772 2.163l.618.618h13.905l-6.798-7.724-8.497-7.571z"></path><path fill="#01579B" d="M16.601 4.259H4.241l15.295 15.295h4.171V9.976l-4.943-4.944c-.694-.697-1.311-.772-2.163-.772"></path><path opacity=".2" fill="#FFF" d="M5.168 19.091c-.618-.62-.772-1.232-.772-2.318V4.414l-.154-.154v12.513c0 1.086 0 1.387.927 2.318l.464.464z"></path><path opacity=".2" fill="#263238" d="M23.553 9.821V19.4h-4.171l.154.154h4.172V9.976Z"></path><path opacity=".2" fill="#FFF" d="M18.764 5.032c-.766-.766-1.394-.772-2.318-.772H4.241l.154.154h12.051c.462 0 1.625-.077 2.318.618"></path><radialGradient id="a" cx="538.463" cy="539.28" r="528.383" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity="0.1"></stop><stop offset="1" stop-color="#fff" stop-opacity="0"></stop></radialGradient><path opacity=".2" fill="url(#a)" d="m23.553 9.821-4.789-4.789-4.017-4.017c-.351-.352-1.082-.772-1.7-.772-.531 0-1.052.106-1.39.309L4.241 4.259.533 11.984c-.132.281-.309.769-.309 1.082 0 .674.297 1.365.772 1.854l3.702 3.675c.089.108.192.219.315.342l.154.154.464.464 4.017 4.017.154.154h9.733v-4.172h4.171V9.976z"></path></svg>hello.dart</div><div class="relative pt-3 pb-0 not-prose"><pre tabindex="0" class="prism-code language-dart bg-transparent !mt-0 !mb-0 m-0 px-0 pt-0 font-jetBrains-mono pb-3"><code class="font-[inherit] bg-transparent inline-block min-w-full"><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// ...</span><span class="token plain"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line px-4 text-xs sm:text-sm 2xl:text-sm" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">initApp</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">winMain</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div><div class="absolute top-2 right-2 flex items-center gap-2"><button type="button" aria-label="Copy code to clipboard" title="Copy code to clipboard" class="w-6 h-6 flex justify-center items-center bg-gray-200 dark:bg-gray-800 hover:bg-gray-300 dark:hover:bg-win32-react-dark-code rounded group transition-[background-color] duration-200 ease-in-out"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 24 24" class="w-3 h-3 text-gray-500 dark:text-gray-400 transition-all duration-200 ease-in-out" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill="none" d="M0 0h24v24H0z"></path><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"></path></svg></button></div></div>
<p><img decoding="async" loading="lazy" alt="Dart Native Win32 Window" src="data:image/png;base64,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" width="908" height="504" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="conclusion">Conclusion<a href="https://win32.pub/blog/calling-windows-apis#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion" translate="no">​</a></h2>
<p><code>package:win32</code> is a powerful tool for Dart developers aiming to leverage the
full capabilities of the Windows operating system. By bridging the gap between
Dart and the extensive Windows APIs, <code>package:win32</code> enables you to create
feature-rich applications with ease.</p>
<p>Whether you're displaying simple message boxes, querying system information, or
creating complex graphical interfaces, <code>package:win32</code> unlocks new possibilities
for your Dart projects. Start exploring today and discover what you can build
with Dart and Windows APIs!</p>
<p>For more detailed information, check out our <a class="" href="https://win32.pub/docs">documentation</a>.</p>]]></content>
        <author>
            <name>Halil Durmus</name>
            <uri>https://halildurmus.dev</uri>
        </author>
        <category label="win32" term="win32"/>
        <category label="dart" term="dart"/>
    </entry>
</feed>