Good Links for Win32 Programming
Microsoft Windows Controls
Windows Controls including common controls.
Windows Custom Draw reference and general documentation.
The Best Reference on COM Threading models ... the details that you need to know.
Good info on STA and windows messaging ... the old MsgWaitForMultipleObjects
Resource Leaks: Detecting, Locating, and Repairing Your Leaky GDI Code
This is a good article on a Win98 tool I used to save me a lot of time. The tool exposes GDI handle leaks (fonts, bitmaps, brushes, etc.). The file is called Leaks.exe and I can't recommend it enough.
Custom Control SPY actually a great reference on the Common Controls.
Looking for RBBS_USECHEVRON, it's not in COMMCTRL.H.
I believe it should be defined to: 0x00000200 or:
#define RBBS_USECHEVRON 0x00000200
I will be moving all the Microsoft Visual Studio info to another
page over here.
Visual Studio Debugger Cheat Sheet
These are some pseudo-variables you can use in Visual Studio 6.0
@err - The last error
@err,hr - The ',hr' does an HRESULT interpretation
DW(@tib+0x24),x - The current threads ID
Another site with some good Visual Studio tips.
Modifying the .RC file and Keeping your changes
Microsoft Support has a good knowledge base
article on this issue
tailored for modifying the VERSIONINFO block.
Note, since my project wasn't MFC, and I didn't have an .rc2 file, I had
to make one. Then I just included them in View->Resource Includes
as Compile time directives. There is almost no documentation on this.
Here are two more good links on the topic.
Google Groups Post (Thanks Vagif!) and
MSDN Article
Using a Group Box in a Dialog?
If so, better make sure those WS_CLIPCHILDREN, WS_CLIPSIBLINGS is off.
A Group Box will not erase it's background and requires its parent
window to do that.
Good Visual Studio Add-Ons
WndTabs - this is a GREAT, FREE, add-on that puts a little tab view in the workspace. This makes it easy to click around quickly to different files. It also adds some new commands that you can bind
keys to. My favorite is the 'Header Flip'. I mapped the CTRL-~ sequence to this
new command. Now, if I'm in About.cpp, I can just hit that sequence and POW, I'm in About.h. Note, the WndTabs header flip is not as good as the one in the next Add-In I mention below.
Visual Assist - this is an absolutely great add-on. It costs money, but it is so good and they have a free trial. The three main features that is provides are: Really Improved/Fantastic completion, Really improved syntax coloring, and the ability to click on a method and then go to the definition of that method
via a listbox selector in the toolbar. Nice! ALSO, VisualAssist has a header flip command as well, in fact, it will search in the entire Workspace for the file. Very Nice!
GRETA - Nice Regex Lib for Visual C++
GRETA - this is a GREAT, FREE, library / C++ template system for doing Perl 5 regular expressions (regex). It was done by a nice fellow named Eric Niebler while he was at Microsoft.
There are three things to keep in mind while using it. First, there is a separate one for commercial/free use here at
GotDotNet. It's in the PowerTools zip file. Second, you will need
to tweak the files (as shown below) for Visual Studio 6.0. Third, I have
found the quality of this lib to be very high, if your regex isn't matching, it is probably your bug, not GRETA's
.
Here is how I built it in Visual Studio 6.0. First, I downloaded the package into a directory called C:\Greta. Then I created a new Win32 Static Library project (and Workspace) called Greta with it's location as C:\Greta. I didn't enable pre-compiled headers or MFC (of course).
After that is done, just add the files to the Source Files folder for
the project.
The next thing to do (for Visual Studio 6.0) is to move the
REGEX_RESET_STK_OFLW() macro definition. The
_resetstkoflw() function is only available for visual studio 7.0. The
syntax2.h file should look like this.
#ifdef _MSC_VER
# include
# define REGEX_ASSERT(x) _ASSERTE(x)
# define REGEX_FORCEINLINE __forceinline
# define REGEX_SELECTANY __declspec(selectany)
# define REGEX_CDECL __cdecl
# define REGEX_SEH_TRY __try
# define REGEX_SEH_EXCEPT(x) __except( x )
# if 1200 < _MSC_VER
# define REGEX_RESET_STK_OFLW() _resetstkoflw()
# define REGEX_NOINLINE __declspec(noinline)
# define REGEX_DEPRECATED __declspec(deprecated)
# define REGEX_DEPENDENT_TYPENAME typename
# else
# define REGEX_RESET_STK_OFLW() ((void)0)
# define REGEX_NOINLINE
# define REGEX_DEPRECATED
# define REGEX_DEPENDENT_TYPENAME
# endif
You can now compile or build the library. The debug build will emit a lot of warnings (C4786) which are exptected from Visual Studio 6.0.
Interesting Google Groups Thread on VC 6.0 Optimizer
manfreds Access Violation with O2
int 3 for a breakpoint
Links for MSLU or Unicows
Release Notes for Unicows
Where to get the Redistributable Unicows DLL (and others)
Nice Page with Links about the Technology