I like your thinking, James.
I too have had some considerations on creating an even easier way to build the ribbon interface than the current implementation of the RIBBONLib.
My thinking sofar had been to omit the "position" for the control to be added in all the creating procedures and add a way to set the current position instetad.
For instance you could do like this:
Call AddTAB("somename", "somecaption")
Call AddGroup("somename", "somecaption")
Call AddButton("somename", "somecaption", "somehandler", "someicon")
The idea here is that when you create a new tab, this becomes the current tab. When you add a new group, this becomes the current group. And the AddButton would basically use the current tab and group as that typically is what developers would expect.
Of course there should also be procedures for setting the current tab, current group and potentially a current control too so that you can add controls to a control, for instance a SplitButton or a DropdownButton.
Sofar, this is still a "work in progress" that hasn't gone further than my mind.
Do you think that would make sense?
Any other suggestions?