Getting started

The Columns UI SDK provides interfaces you can use to:

  • create windows controlled by a host and embedded in the host’s window

  • provide information about commands to be used as a toolbar button


You’ll need:

To install, download the SDK and extract the archive alongside the foobar2000 subdirectory of your foobar2000 SDK.


Insert the columns_ui-sdk project into your solution, and add it as a dependency for your project. Then #include "columns_ui-sdk/ui_extension.h" in your project as needed.


Two examples are published on GitHub:

Panel APIs


Clients should implement uie::window. Specific sub-classes exist for

Hosts should implement uie::window_host. Hosts wishing to expose external control methods can implement uie::window_host_with_control instead.


The preferred method of implementing the window class is to derive from uie::container_uie_window_v3 (although this may not be suitable for single-instance panels or dialog-based panels).

Button APIs


The base class for buttons is uie::button.

If you wish to provide default bitmaps and additional information for your menu items, derive from uie::menu_button. If you wish to implement a custom button not based upon a menu item, derive from uie::custom_button.

Standard windows

The GUIDs for the standard panels may be found in the cui::panels namespace. The GUIDs for the standard toolbars may be found in the cui::toolbars namespace.

You may use these GUIDs to create the standard windows in your own component; do not use them as GUIDs for your own windows.