Jump to content

Recommended Posts

Posted

These forum members that in 2011 dropped the project, dropped it because it was going nowhere.
Even the site for this is gone since 2016, so no pro license. No support. Unfortunately no one left a clear reason for not continuing with this but is clear that it was not all that good, ...even as enticing as the concept is.

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Posted (edited)

I use ribbons very often but I don't use any software. I create the ribbon xml manually and I compile the dll manually. Anyway, in Win 11 they screwed some ribbon functionalities so I don't know if it would be suitable in next years.

 

PS: if anyone it's interested I can detail the steps and show some examples

Edited by Andreik
Posted (edited)

In order to manually create the ribbon resource DLL there are certain tools required such as UI Command Compiler (uicc.exe) that might be found in Windows SDK (7.0 or later), Microsoft Windows Resource Compiler (rc.exe) that might be found in Visual Studio or Microsoft Windows and MSVC Linker that might be found in Visual Studio. In my case I managed to pick up from Windows SDK and Visual Studio just the files required to create a ribbon resource DLL and put them all in a directory (zip attached), so I don’t really need to install anything. Actually with a little bit of code manipulation I can dynamically create the content of the resource DLL.

 

How it works?

  1. We have to manually create the Ribbon Markup that describe the UI design of the ribbon. This Ribbon Markup it's basically an XML that describe what kind of controls do you want and how these controls should be displayed in certain situations. When we finish our Ribbon Markup we have to use UICC to generate a resource file (.rc) and a markup binary file (.bml). 
  2. Then we have to use RC on the resource file generated by UICC to create a resource-definition file (.res). At this point we need to have all the resources prepared (like images from the ribbon, etc).
  3. The last step is to link everything into a DLL with MSVC Linker.

 

What structure does have a Ribbon Markup file?

There are two logical sections of the Ribbon Markup file:

  • Commands - that are abstract structures without presentation constraints but with certain properties or attributes.
  • Views - that controls how the ribbon entities are displayed.

image.png.f21df96778d242fd7b79322e5a6e1dc5.png

This is how it would look like a bare Ribbon Markup file.

Basically in the first section (Commands) we define the tabs, groups, buttons, fonts and many other entities and in the second section (Views) we describe in what layouts and sizes will display these entities. A list of controls that might be defined as commands you can find in Windows Ribbon Framework Control Library.

I will show you an example of a dummy application that might be a real case of a library management tool.

 

Commands

In my Commands sections I will define 3 tabs, 6 groups and lots of button controls, a font control and some menu items. Each Command needs a Name and an ID, everything else I think are not mandatory but you might set the titles, tooltips of keytips (these works like GUI accelerators). You need Name for Commands because in the next sections Commands are referenced by their name and ID because each Command entry is used by the framework to bind a Ribbon control, through a Command ID, to a Command handler defined in the application code. Also for buttons it's suitable to have images/icons that comes in two sizes: large (32x32 px) and small (16x16 px). The appropriate size will be displayed accordingly with size definitions from Views.

<Application.Commands>
    <!-- Tabs -->
    <Command Name="Tab1" Id="11" LabelTitle="Books" Keytip="B" />
    <Command Name="Tab2" Id="12" LabelTitle="Management" Keytip="M" />
    <Command Name="Tab3" Id="13" LabelTitle="Settings" Keytip="S" />

    <!-- Groups -->
    <Command Name="Group1" Id="101" LabelTitle="Books"/>
    <Command Name="Group2" Id="102" LabelTitle="Authors"/>
    <Command Name="Group3" Id="103" LabelTitle="Books management"/>
    <Command Name="Group4" Id="104" LabelTitle="Font"/>
    <Command Name="Group5" Id="105" LabelTitle="Settings"/>
    <Command Name="Group6" Id="106" LabelTitle="Database"/>

    <!-- Controls from Group 1 (Tab 1) -->
    <Command Name="Control1" Id="1001" LabelTitle="Find" TooltipTitle="Find book" TooltipDescription="Find a book in database." Keytip="F">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\book_find_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\book_find_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control2" Id="1002" LabelTitle="Read" TooltipTitle="Read book" TooltipDescription="Read a book from database." Keytip="R">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\book_read_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\book_read_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control3" Id="1003" LabelTitle="Add" TooltipTitle="Add book" TooltipDescription="Add a book in database." Keytip="A">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\book_add_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\book_add_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control4" Id="1004" LabelTitle="Edit" TooltipTitle="Edit book" TooltipDescription="Edit a book from database." Keytip="E">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\book_edit_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\book_edit_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control5" Id="1005" LabelTitle="Delete" TooltipTitle="Delete book" TooltipDescription="Delete a book in database." Keytip="D">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\book_delete_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\book_delete_s.bmp" /></Command.SmallImages>
    </Command>

    <!-- Controls from Group 2 (Tab 1) -->
    <Command Name="Control6" Id="1006" LabelTitle="Add" TooltipTitle="Add author" TooltipDescription="Add an author in database." Keytip="W">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\\author_add_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\\author_add_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control7" Id="1007" LabelTitle="Edit" TooltipTitle="Edit author" TooltipDescription="Edit an author from database." Keytip="X">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\\author_edit_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\\author_edit_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control8" Id="1008" LabelTitle="Delete" TooltipTitle="Delete author" TooltipDescription="Delete an author from database." Keytip="Y">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\\author_delete_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\\author_delete_s.bmp" /></Command.SmallImages>
    </Command>

    <!-- Controls from Group 3 (Tab 2) -->
    <Command Name="Control9" Id="1009" LabelTitle="Wishlist" TooltipTitle="Wishlist" TooltipDescription="Manage your wihlist." Keytip="W">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\wishlist_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\wishlist_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control10" Id="1010" LabelTitle="Burrows" TooltipTitle="Burrows" TooltipDescription="Register a burrow." Keytip="B">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\burrow_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\burrow_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control11" Id="1011" LabelTitle="Returns" TooltipTitle="Returns" TooltipDescription="Register a return." Keytip="R">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\\return_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\\return_s.bmp" /></Command.SmallImages>
    </Command>

    <!-- Controls from Group 4 (Tab 3) -->
    <Command Name="Control12" Id="1012" LabelTitle="Font" TooltipTitle="Font" TooltipDescription="Change you app font" Keytip="F"></Command>

    <!-- Controls from Group 5 (Tab 3) -->
    <Command Name="Control13" Id="1013" LabelTitle="General" TooltipTitle="General" TooltipDescription="Modify general settings." Keytip="G">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\settings_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\settings_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control14" Id="1014" LabelTitle="Theme" TooltipTitle="Theme" TooltipDescription="Modify you application theme." Keytip="T">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\\themes_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\\themes_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control15" Id="1015" LabelTitle="Integrity" TooltipTitle="Integrity" TooltipDescription="Check your application integrity." Keytip="I">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\integrity_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\integrity_s.bmp" /></Command.SmallImages>
    </Command>

    <!-- Controls from Group 6 (Tab 3) -->
    <Command Name="Control16" Id="1016" LabelTitle="Backup" TooltipTitle="Backup" TooltipDescription="Backup your database." Keytip="B">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\backup_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\backup_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Control17" Id="1017" LabelTitle="Restore" TooltipTitle="Restore" TooltipDescription="Restore your database." Keytip="R">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\\restore_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\\restore_s.bmp" /></Command.SmallImages>
    </Command>
    
    <!-- Application Menu -->
    <Command Name="ApplicationMenu" Id="10000" LabelTitle="Application Menu" Keytip="A" />

    <!-- Application Menu Items -->
    <Command Name="Info" Id="10100" LabelTitle="Info" TooltipTitle="Info" TooltipDescription="Application information." Keytip="I">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\info_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\info_s.bmp" /></Command.SmallImages>
    </Command>
    <Command Name="Version" Id="10200" LabelTitle="Versions" TooltipTitle="Versions" TooltipDescription="Check you application verion." Keytip="V">
      <Command.LargeImages><Image Source="C:\Ribbon\Icons\BMP\versions_l.bmp" /></Command.LargeImages>
      <Command.SmallImages><Image Source="C:\Ribbon\Icons\BMP\versions_s.bmp" /></Command.SmallImages>
    </Command>
    
    <!-- Quick Access Toolbar-->
    <Command Name="QuickAccessToolbar" Id="11000" Keytip="Q" />
    
    <!-- Help Button -->
    <Command Name="HelpButton" Id="12000" Keytip="H" />
  </Application.Commands>

Notes:

  • You can choose Name and ID by your own pleasure. To avoid any kind of mess in large projects I use this method to assign IDs from range 11-99 for tabs, from range 101-999 for groups and from 1001-9999 for other entities. Also I use ID 10000 for Application Menu and anything above for Menu Items. For Quick Access Toolbar and Help Button I use some larger values than last menu item.
  • I highly recommend to use double backslashes (\\) in images paths as you could encounter errors for certain paths (like those ending with \a, \r, \t).
  • Images have to be 32-bit bitmaps. I attached a script that converts PNGs to such BMPs.

 

Views

Now we need to describe how all these entities declared above will be displayed. Usually there are two sections in Application.Views but for the sake of simplicity I will go with a basic example without a context menu, so all we have under Application.Views it's just the Ribbon.

<Application.Views>
    <Ribbon>
      <Ribbon.QuickAccessToolbar>
        <QuickAccessToolbar CommandName="QuickAccessToolbar" />
      </Ribbon.QuickAccessToolbar>
      <Ribbon.ApplicationMenu>
      <ApplicationMenu CommandName="ApplicationMenu">
          <MenuGroup>
            <Button CommandName="Info" />
            <Button CommandName="Version" />
          </MenuGroup>
        </ApplicationMenu>
      </Ribbon.ApplicationMenu>
      <Ribbon.HelpButton>
        <HelpButton CommandName="HelpButton" />
      </Ribbon.HelpButton>
      <Ribbon.Tabs>
        <Tab CommandName="Tab1">
            <Tab.ScalingPolicy>
                <ScalingPolicy>
                    <ScalingPolicy.IdealSizes>
                        <Scale Group="Group1" Size="Medium"/>
                        <Scale Group="Group2" Size="Large"/>
                    </ScalingPolicy.IdealSizes>
                </ScalingPolicy>
            </Tab.ScalingPolicy>
            <Group CommandName="Group1" SizeDefinition="FiveButtons">
                <Button CommandName="Control1" />
                <Button CommandName="Control2" />
                <Button CommandName="Control3" />
                <Button CommandName="Control4" />
                <Button CommandName="Control5" />
            </Group>
            <Group CommandName="Group2" SizeDefinition="ThreeButtons">
                <Button CommandName="Control6" />
                <Button CommandName="Control7" />
                <Button CommandName="Control8" />
            </Group>
        </Tab>
        <Tab CommandName="Tab2">
            <Tab.ScalingPolicy>
                <ScalingPolicy>
                    <ScalingPolicy.IdealSizes>
                        <Scale Group="Group3" Size="Medium"/>
                    </ScalingPolicy.IdealSizes>
                </ScalingPolicy>
            </Tab.ScalingPolicy>
            <Group CommandName="Group3" SizeDefinition="ThreeButtons-OneBigAndTwoSmall">
                <Button CommandName="Control9" />
                <Button CommandName="Control10" />
                <Button CommandName="Control11" />
            </Group>
        </Tab>
        <Tab CommandName="Tab3">
            <Tab.ScalingPolicy>
                <ScalingPolicy>
                    <ScalingPolicy.IdealSizes>
                        <Scale Group="Group4" Size="Large"/>
                        <Scale Group="Group5" Size="Large"/>
                    </ScalingPolicy.IdealSizes>
                </ScalingPolicy>
            </Tab.ScalingPolicy>
            <Group CommandName="Group4" SizeDefinition="OneFontControl">
                <FontControl CommandName="Control12" FontType="FontOnly" />
            </Group>
            <Group CommandName="Group5" SizeDefinition="ThreeButtons">
                <Button CommandName="Control13" />
                <Button CommandName="Control14" />
                <Button CommandName="Control15" />
            </Group>
            <Group CommandName="Group6" SizeDefinition="TwoButtons">
                <Button CommandName="Control16" />
                <Button CommandName="Control17" />
            </Group>
        </Tab>
      </Ribbon.Tabs>
    </Ribbon>
  </Application.Views>

Then we specify what Commands are actually our Quick Access Toolbar, ApplicationMenu with Menu Items and Help Button. Next we have Ribbon.Tabs that will describe each Tab by their appropriate Command Name.

Quote

The framework exposes adaptive layout functionality through a set of markup elements that are dedicated to specifying and customizing various layout behaviors. A collection of templates, called SizeDefinitions, is defined by the framework, each of which support various control and layout scenarios.

 

Quote

To display controls in a preferred layout at a particular ribbon size, both predefined templates and custom templates work in conjunction with the ScalingPolicy element. This element contains a manifest of size preferences that the framework uses as a guide when rendering the ribbon.

 

Basically we group the Commands in specific Groups (with a layout defined by SizeDefinition and ScalePolicy) and then we place these Groups in specific Tabs. Microsoft provides a list of templates for SizeDefinition and ScalePolicy so you can Customize a Ribbon Through Size Definitions and Scaling Policies.

 

Compiling the DLL

After we finished our Ribbon Markup file (let's name it lib.xml) we can generate a resource file (.rc) and a markup binary file (.bml) through UICC using this command line:

uicc.exe lib.xml lib.bml /res:lib.rc /name:APP

Where APP it's the resource name for the binary markup file. The default is APPLICATION_RIBBON. By observation I saw that UICC actually adds _RIBBON after the name even if you specify something different from default name. This is important when you have to initialize the ribbon. The image below is suggestive about what UICC does.

image.png.542a778446192c72b657cd4e04442a0f.png

(Source: Microsoft)

 

If these files are generated without any errors thrown we can go on and create a resource-definition file (.res) with Microsoft Windows Resource using this command line:

rc.exe /v lib.rc

 

Again, if there are no errors we can finally compile the DLL with our ribbon inside using this command line:

link.exe /noentry /dll /out:lib.dll lib.res /machine:x86

 

If there are no errors then you can use Dragana's built-in example to test your ribbon, just change the lines 100 and 101 to match your ribbon DLL filename and resource name.

Global $hRibInstance = _WinAPI_LoadLibraryEx("lib.dll", 2)
Global $sResName = "APP_RIBBON"

 

I won't insist here about initialization and handling because there are already many examples in this thread. Eventually I can answer if someone have specific questions about that. There is a page on Microsoft that explain more details about Ribbon Framework initialization and how you can handle the commands between your application and your ribbon.

I attached a zip file with all the files: ribbon markup, resources, compiled dll, a script to convert PNGs to 32-bit BMP and Dragana's built-in example that load this DLL created in this example. And with that I have less then 1 MB available for attachments. Here is a picture of final ribbon.

image.png.5c64214815075a20c1497e8dd4851295.png

 

Enjoy!

PS: This is just a basic example but there are more advanced features that are available through Windows Ribbon Framework but for now I think it's enough. I don't really intend to rewrite what it's already on Microsoft website.

 

Ribbon.zip

Edited by Andreik
Posted

Thanks! Looks good. I just can't quite see through it. I only need a tab with 4 groups.

Tab name "KRWD"

Group 1 should say "Open File", Button 1 "Datei öffnen"

Group 2 should say "Treeview", button 1 "Ordner zuklappen", button 2 "Ordner aufklappen".

Group 3 should say "WebBrowser", button 1 "Zurück", button 2 "Vorwärts", button 3 "Refresh" and button 4 "Abbrechen"

Group 4 should say "Weitere", button 1 "Einstellungen", button 2 "Hilfe" and button 3 "Beenden"

Texts in German.

What should "Commands" and "View" look like? Maybe then I'll understand. I've attached my current project

Later it should be possible to switch between toolbar and ribbon, but I should be able to do that myself.

Kompendium KRW - open.zip

Posted

The simplified Ribbon Markup will look like this:

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon">
  <Application.Commands>
    <!-- Tabs -->
    <Command Name="Tab1" Id="11" LabelTitle="KRWD" Keytip="K" />

    <!-- Groups -->
    <Command Name="Group1" Id="101" LabelTitle="Open File"/>
    <Command Name="Group2" Id="102" LabelTitle="Treeview"/>
    <Command Name="Group3" Id="103" LabelTitle="WebBrowser"/>
    <Command Name="Group4" Id="104" LabelTitle="Weitere"/>


    <!-- Buttons -->
    <Command Name="Control1" Id="1001" LabelTitle="Datei öffnen"/>

    <Command Name="Control2" Id="1002" LabelTitle="Ordner zuklappen"/>
    <Command Name="Control3" Id="1003" LabelTitle="Ordner aufklappen"/>

    <Command Name="Control4" Id="1004" LabelTitle="Zurück"/>
    <Command Name="Control5" Id="1005" LabelTitle="Vorwärts"/>
    <Command Name="Control6" Id="1006" LabelTitle="Refresh"/>
    <Command Name="Control7" Id="1007" LabelTitle="Abbrechen"/>

    <Command Name="Control8" Id="1008" LabelTitle="Einstellungen"/>
    <Command Name="Control9" Id="1009" LabelTitle="Hilfe"/>
    <Command Name="Control10" Id="1010" LabelTitle="Beenden"/>
    
    
    <!-- Application Menu -->
    <Command Name="ApplicationMenu" Id="10000" LabelTitle="Application Menu" Keytip="A" />
    
    <!-- Quick Access Toolbar-->
    <Command Name="QuickAccessToolbar" Id="11000" Keytip="Q" />
    
    <!-- Help Button -->
    <Command Name="HelpButton" Id="12000" Keytip="H" />
  </Application.Commands>
  <Application.Views>
    <Ribbon>
      <Ribbon.QuickAccessToolbar>
        <QuickAccessToolbar CommandName="QuickAccessToolbar" />
      </Ribbon.QuickAccessToolbar>
      <Ribbon.ApplicationMenu>
      <ApplicationMenu CommandName="ApplicationMenu">
        </ApplicationMenu>
      </Ribbon.ApplicationMenu>
      <Ribbon.HelpButton>
        <HelpButton CommandName="HelpButton" />
      </Ribbon.HelpButton>
      <Ribbon.Tabs>
        <Tab CommandName="Tab1">
            <Group CommandName="Group1" SizeDefinition="OneButton">
                <Button CommandName="Control1" />
                </Group>
            <Group CommandName="Group2" SizeDefinition="TwoButtons">
                <Button CommandName="Control2" />
                <Button CommandName="Control3" />
                </Group>
            <Group CommandName="Group3" SizeDefinition="FourButtons">
                <Button CommandName="Control4" />
                <Button CommandName="Control5" />
                <Button CommandName="Control6" />
                <Button CommandName="Control7" />
                </Group>
            <Group CommandName="Group4" SizeDefinition="ThreeButtons">
                <Button CommandName="Control8" />
                <Button CommandName="Control9" />
                <Button CommandName="Control10" />
                </Group>
        </Tab>
      </Ribbon.Tabs>
    </Ribbon>
  </Application.Views>
</Application>

But I suppose you want to add pictures to these buttons. You really need to take your time to understand how it works because the markup it's relatively easy compared with the code that will deal with the actual handling of the ribbon so if you can't understand that part it will be very painful later.

image.png.66de27c8e6f8a04d3e348cd39f7b7586.png

Posted

Of course it doesn't. As I said I don't rewrite what has been already done. Check out Dragana's script and how to handle the messages from ribbon. Just a hint, check out _MyHandler_Execute() in the indicated script. The IDs that you set in your ribbon markup will be received by this function as $iCommandId.

Posted (edited)

I get this error message. What could it be?

 

C:\Users\reneh\Desktop\Ribbon>uicc.exe lib.xml lib.bml /res:lib.rc /name:APP
Ribbon markup file validation successful: 'lib.xml'.
Ribbon resource file generation successful: 'lib.rc'.

C:\Users\reneh\Desktop\Ribbon>rc.exe /v lib.rc
Microsoft (R) Windows (R) Resource Compiler Version 10.0.10011.16384
Copyright (C) Microsoft Corporation.  All rights reserved.

Using codepage 1252 as default
Creating lib.res

lib.rc........
eneh\Desktop\Ribbon\Icons\bmp☺.bmpot found: C:\Users

Writing IMAGE:60008,    lang:0x409,     size 0.
eneh\Desktop\Ribbon\Icons\bmp☺.bmpot found: C:\Users

Writing IMAGE:60009,    lang:0x409,     size 0..............
Writing UIFILE:APP_RIBBON,      lang:0x409,     size 2504
Writing STRING:3751,    lang:0x409,     size 260
Writing STRING:3752,    lang:0x409,     size 120

C:\Users\reneh\Desktop\Ribbon>link.exe /noentry /dll /out:lib.dll lib.res /machine:x86
Microsoft (R) Incremental Linker Version 14.26.28806.0
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1181: cannot open input file 'lib.res'

C:\Users\reneh\Desktop\Ribbon>

 

lib.xml

Edited by mumpel
Posted

As I said in the notes above.

Quote

I highly recommend to use double backslashes (\\) in images paths as you could encounter errors for certain paths (like those ending with \a, \r, \t).

 

Posted
3 hours ago, argumentum said:

try regular characters ?,

The images were named "1.png", 2.png"... and "refresh.png", which the compiler probably doesn't like.

 

Creating the ribbon now works. Unfortunately it disappears as soon as I select something in the treeview. What could be causing the problem?

Treeview_with_Ribbon.zip

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...