mumpel Posted August 30, 2023 Share Posted August 30, 2023 Unfortunately does not work under Windows 11. Too bad! argumentum 1 Link to comment Share on other sites More sharing options...
Mugen Posted September 1, 2023 Share Posted September 1, 2023 I can't get this VRC program to build a dll on Windows 7 + VS 2010. Link to comment Share on other sites More sharing options...
argumentum Posted September 1, 2023 Share Posted September 1, 2023 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. Link to comment Share on other sites More sharing options...
mumpel Posted September 1, 2023 Share Posted September 1, 2023 It was worth a try. argumentum 1 Link to comment Share on other sites More sharing options...
Mugen Posted September 1, 2023 Share Posted September 1, 2023 Found RibbonFramework requires Delphi, but can create a dll that will work with AutoIt. argumentum 1 Link to comment Share on other sites More sharing options...
Andreik Posted September 1, 2023 Share Posted September 1, 2023 (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 September 1, 2023 by Andreik argumentum 1 When the words fail... music speaks. Link to comment Share on other sites More sharing options...
argumentum Posted September 1, 2023 Share Posted September 1, 2023 2 hours ago, Andreik said: PS: if anyone it's interested I can detail the steps and show some examples I am curious about it. It may be cumbersome to use, I think. If you have the time, it'd be good to have. Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
Andreik Posted September 2, 2023 Share Posted September 2, 2023 (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? 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). 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). 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. 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. expandcollapse popup<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. expandcollapse popup<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. (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.  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 April 3 by Andreik argumentum, dmob and UEZ 1 2 When the words fail... music speaks. Link to comment Share on other sites More sharing options...
mumpel Posted September 2, 2023 Share Posted September 2, 2023 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 Link to comment Share on other sites More sharing options...
Andreik Posted September 2, 2023 Share Posted September 2, 2023 The simplified Ribbon Markup will look like this: expandcollapse popup<?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. When the words fail... music speaks. Link to comment Share on other sites More sharing options...
mumpel Posted September 2, 2023 Share Posted September 2, 2023 Thanks! In the example "Ribbon.zip" the buttons do not work. What else do you need to adjust? Link to comment Share on other sites More sharing options...
Andreik Posted September 2, 2023 Share Posted September 2, 2023 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. When the words fail... music speaks. Link to comment Share on other sites More sharing options...
mumpel Posted September 3, 2023 Share Posted September 3, 2023 (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 September 3, 2023 by mumpel Link to comment Share on other sites More sharing options...
argumentum Posted September 3, 2023 Share Posted September 3, 2023 1 hour ago, mumpel said:  Icons\bmp☺.bmpot <--- ???? "☺" ??? Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
mumpel Posted September 3, 2023 Share Posted September 3, 2023 It was the file names. Â Link to comment Share on other sites More sharing options...
argumentum Posted September 3, 2023 Share Posted September 3, 2023 try regular characters ?, ... rename them and try again. I know that it has issues with names ( googling ) Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
Andreik Posted September 3, 2023 Share Posted September 3, 2023 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). Â When the words fail... music speaks. Link to comment Share on other sites More sharing options...
mumpel Posted September 3, 2023 Share Posted September 3, 2023 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 Link to comment Share on other sites More sharing options...
Andreik Posted September 3, 2023 Share Posted September 3, 2023 Add in your code: GUIRegisterMsg(0x0014, "WM_ERASEBKGND") Func WM_ERASEBKGND($hWnd, $msg, $wParam, $lParam) Return 1 EndFunc  mumpel 1 When the words fail... music speaks. Link to comment Share on other sites More sharing options...
mumpel Posted September 3, 2023 Share Posted September 3, 2023 Thanks! It works. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now