Everywhere in life people have to have some common knowledge about how something is done, i.e. if anybody wants to use an elevator one has to know if the levels are numbered "E, 1, 2, ..." (european) or "1, 2, 3, ..." (american). This seems rather simple but where is the reverse gear in a car with a shift stick? Or do you know why a save door always should open outward? It's rather obvious that some common knowledge or guidelines are necessary.
In ordinary life this common knowledge is accumulated through a long process of looking what others do and asking people about certain situations. This process is called education. In computer science this common knowledge either doesn't exists, isn't well defined in an structured manner or isn't written down, at least not in a platform independent way. Everyone develops his own way quite similar as in the early days of the cars.
The guidelines outlined here follow two principles, first they allow for users to feel comfortable with an application and second they should be defined in a way developers can easily apply them. This means the guidelines may not always produce the best result, as always compromises have to be made.
Good guidelines are just agreed upon and used without thinking much. Since this is not possible in each case, apply the guidelines where they are appropriate and don't if they don't make sense. That should not be used as an excuse but more as common sense. Some guidelines are easier to follow, with others you have to try harder. Consider the real gain comes only when enough people just use the guidelines. After all they are made to allow for better code, for better understanding and for better exchanging ideas and knowledge.
Guidelines tend to become rather artificial if not immediately supported by working samples. This means an environment has to be chosen, of course without compromising or limiting these guidelines. So for the purpose of supporting this guidelines wxWidgets (a cross platform toolkit) and C++ (one of the widely known languages) has been chosen. For the average developer it shouldn't be too difficult to translate these guidelines to other frameworks and other languages.
All the code samples are implemented and tested in the Demo sample. In case the documented code doesn't work (nobody is perfect) look first there. Besides the Demo sample is a fully functional application which just can be used as a starting code base.
If applications were written for different platforms (as should always be the case) these guidelines should be applied for each port. The guidelines avoid any platform specific features still it might be easier to apply them on certain platforms. So it's possible that guidelines specify features which are standard on some platform but not on others. In any case it should be possible to develop such features on any platform.
Since platform differ in some points rather much it's not easy to specify cross platform guidelines. Whenever a conflict arises this is marked in the guidelines and a user may equally well use the native guideline. But never use a native guideline on any other platforms, either use the fitting one or use the wxGuide one.
There are other guidelines for various special cases (see References). If any suits you or your project better, that's okay. I've tried to take over everything useful from the other guidelines but in your case that might be not enough. Still you can't do much wrong if you use the wxGuide guidelines.
To develop the guidelines further I need to know what others think about. What is perfect, what is missing, what is wrong. It would be nice if could write your experience after some use into the wxGuide mailing list (see link below).