Have a look at some of the tricks ATL uses aswell with template paremters used for base classes; an alternative powerful technique that can sometimes meet your requirements instead of using multiple inheritance.
That seems to say "use the ATL technique "instead of" multiple inheritance"
if ( !OpenClipboard() )
AfxMessageBox( "Cannot open the Clipboard" );
// Remove the current Clipboard contents
if( !EmptyClipboard() )
AfxMessageBox( "Cannot empty the Clipboard" );
// Get the currently selected data, hData handle to
// global memory of data
// For the appropriate data formats...
if ( ::SetClipboardData( CF_??, hData ) == NULL )
AfxMessageBox( "Unable to set Clipboard data" );
What shows in the tooltip is simply the current caption of your window. So you can use SetWindowText() to change it. Note, though, that this is not always advisable, especially if writing in MFC - the MFC framework handles the window title.
I am wondering what is the function of .suo file? If I want to share source codes with other people, for example, using CVS or something similar, does this file mandatory to check-in? Do other people need this file to make a same build and setup the same working environment as mine?
No, you don't need to share this file. The only files that you need to save into CVS are the source files (.cpp and .h), the solution file (.sln) and the project files (.vcproj, one for each project in your solution). This is for VS2005, for VC6 the project and 'solution' files are different (.dsw and .dsp) and for VS2003, I don't know
It contains information about the user settings. For example, which files are opened, which nodes in the 'explorer' window are expanded, the position of the breakpoints, ...
So, it is very user specific and doesn't need to be saved in CVS (and it shouldn't, because I think it is quite annoying to loose all this information each time).