We'd like this page to become a central point for submissions of various enhancements and fixes to the Ultimate Toolbox. Those of you who have code that will help others can forward submissions to any of the co-authors of this page.

Those wishing to take a more active role can become co-authors, and help to collate and maintain the code base and user submissions.

What can I contribute?

Pretty much anything that enhances or fixes code in the Ultimate Toolbox. A simple zip of a class file can be posted here for review before inclusion into an update. All we ask is that changes are reasonably commented and documented.

Links to user submitted articles relating to the Ultimate Toolbox can be collated here as well.

We're keeping this fairly open to start - comments and suggestions, as always, most welcome.

Updates and Contributions

This is the first update of the Ultimate Toolbox source files based on user submitted corrections and enhancements. Only the affected source and header files are included, along with an updated ChangeHistory.htm. NOTE: VS2008 corrections have not been addressed in this update.

Status:

Beta - these files are not yet incorporated into the main Ultimate Toolbox source code download.

This update incorporates VS2008 compilation changes based on user submitted corrections and enhancements. Only the affected source and header files are included, along with an updated ChangeHistory.htm. NOTES: Remaining Vista issues are not addressed in this update. Docking windows functionality may be affected by the move to MFC 8.0 compilation.

Requirements:

This update assumes Update 01 has been applied.

Status:

Beta - these files are not yet incorporated into the main Ultimate Toolbox source code download.

This update incorporates 64-bit compilation changes to the core source code based on suggested corrections and enhancements.

The goal of this update is to allow compilation for 64-bit while retaining 32-bit compatibility with earlier (VC6, VS2003, VS2005) compilers, so that we can continue to maintain one codebase.

Only the affected source and header files are included, along with an updated ChangeHistory.htm.

Requirements:

This update assumes Update 01 and Update 02 have been applied.

Status:

Alpha - The changes in this download have not been tested on a 64-bit platform - they allow compilation in 64-bit. Compiled using the cross compiler in VS2008. They are offered here for testing. Updates to the sample projects are not included.

These files are not yet incorporated into the main Ultimate Toolbox source code download.

This new version rolls the four existing updates to UG into a new official release. Additionally, it adds VC2008, VC2010 and VC2012 projects and solutions to make it easier for developers working on those versions.

Requirements:

None. This is a self-contained full release.

Status:

Beta - will wait for feedback prior to promoting this as the next official release.

This is a update with corrections for the OutlookStyle demo contained in the samples download for the Ultimate Grid. The project uses files from the Ultimate Toolbox source, and shipped with incorrect paths to these files.

The projects now assume the Ultimate Toolbox directory is at the same level as the Ultimate Grid, and uses the correct relative paths.

The projects were previously referencing files not required for compilation, two of which are not included in the Ultimate Toolbox source download.

The CCellTypeOutlook class is renamed to COutlookGrid.

The CelltypeOutlook.cpp and .h files are replaced with OutlookGrid.cpp and .h.

The demo shows the grid set up for Outlook style message selection, with read/unread and flag bitmaps etc, and highlights the use of the CUGExpandType, CUGCTOutlookHeader, CUGCTMail, and CUGCTMailSort celltypes.

Requirements:

Assumes the Ultimate Toolbox source and include files are installed along with Ultimate Grid.

This is the first update of the Ultimate Grid source files based on user submitted corrections and enhancements. Only the affected source and header files are included, along with an updated ChangeHistory.htm.

Status:

Beta - these files are not yet incorporated into the main Ultimate Grid source code download.

The goal of this update is to allow compilation for 64-bit while retaining 32-bit compatibility with earlier (VC6, VS2003, VS2005) compilers, so that we can continue to maintain one codebase.

Only the affected source and header files are included, along with an updated ChangeHistory.htm.

Requirements:

Assumes Update 01 has been applied.

Status:

Alpha - The changes in this download have not been tested on a 64-bit platform - they allow compilation in 64-bit. Compiled as x64 using the cross compiler in VS2008. They are offered here for testing. x64 configurations for the library builds and sample projects are not included.

These files are not yet incorporated into the main Ultimate Grid source code download.

This update incorporates incorporates some minor changes based on testing in VS2008 and 64-bit.

This update incorporates the initial changes needed for compilation in VS2008 and 64-bit while retaining 32-bit compatibility with earlier (VC6, VS2003, VS2005) compilers.

Only the affected source and header files are included, along with an updated ChangeHistory.htm.

Status:

Alpha - The changes in this download have not been tested on a 64-bit platform - they allow compilation in 64-bit. Compiled using the cross compiler in VS2008. They are offered here for testing. Updates to the sample projects are not included.

These files are not yet incorporated into the main Ultimate TCP-IP source code download.

Share

About the Author

In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.

Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.

x64 needs DWORD_PTR, it was wrong to simply change dwData to a DWORD. The hashtable & hashNode need changed to a DWORD_PTR. all instances need changed to _PTR types to prevent memory exceptions in x64.

2) What is with all the 4456 warnings? (Declaration Hides Previously Declared Variable)
It makes the code VERY unclear. "Is this a mistake? No one would create a local (m_) named variable on purpose...but I assume they didn't want to use the member...I guess Ill leave it until I have time to understand it."

3) OXUUDec.cpp line 153 & line 590
1>..\..\source\OXUUDec.cpp(153): warning C4473: 'sscanf_s' : not enough arguments passed for format string
note: placeholders and their parameters expect 3 variadic arguments, but 2 were provided. The missing variadic argument 3 is required by format string '%255s'. This argument is used as a buffer size.

2. That error means there is a variable at module or global scope with the same name as a local variable in a method or function. Those should be fixed if possible because you have essentially ambiguous variables and those are not good.

I had this problem. I fixed it but it required a change to the source of the library and a rebuild of it.

What you have to do is remove includes of Multimon.h. In the latest SDK that function is declared in WinUser.h and there are macros to 'map' it. The macros in Multimon.h differ from the one in WinUser.h and the function it's defined as does not exist.

Get the last five updates to the library. They have commented it off in several modules. You will still need to rebuild but at least you will have the latest, standard version of the code.

I would like to report that I was able to get Ultimate Toolbox building as a DLL (not Unicode) using Visual Studio 2015 with just a few minor changes. This is for a test conversion of moving our software to both Visual Studio 2012 and 2015 Professional. If anyone would like the details let me know and I can post them.

I have update CellTypeDemoGrid.cpp and CellTypeDemoGrid.h to make the code Unicode compliant. This consists of adding alot of _T() constructs to the cpp file and changing a few LPCSTR to LPCTSTR in the cpp and h files.

MS VS 2010 : I am using an object of COXStatusBar Class (pointer) in the CMainFrame class of my project. I need to refer this same object into two DLLs. When it is used in first DLL then it is working fine but when the same object is being used in the second DLL it is crashing. The function which is being called is "ResetBar" .

I found that when COXStaticText was scrolling and SetBgColour was called, the scrolling text position was reset to the default which made it look jumpy. I have alternating colours on my CStaticText background so it looked a bit odd. I found that adding the following check to see if scrolling had started fixed my issue...

Hello, I was just wondering if anyone has been able to get the UTB working with VS2012 yet? I was able to compile the UG without problem but I am having some issues with the UTB and wanted to check if anyone else has fixed the problems yet before I delve in to deep.

Looks like VS2012 won't work with XP so I had to change the WINVER in the stdafx from 0x0501 (XP) to 0x0600 (Vista) after that UTB built with out major problems. I would still like to target XP with my application but I may need to stay away from VS2012 until they fix that issue.

I have used UGGrid in my application and built in both 64 as well as 32 bit . It was working fine . Now we started using new look of common controls #define _IMPROVE_LOOKANDFEEL InitCommonControlsEx then it started crashing and it seems to be a some paint issue. Got few updates from Code project could solve the paint in 64 bit but 32 bit it is still crashing . In 64 bit when we sort the list it crashes i.e CUGTopHdg::OnLButtonDown which intern points to OnDrawFocusRect of the client .

Is there any update for these new look of common controls and 64 bit crash .

I am using the ultimate toolbox for my application. I have two toolbars side by side in my application.

keeping my application on top and if the system is locked and unlocked, the toolbars are at the same positions side by side. But if the application is minimized, and system is locked and unlocked, then the two tool bars which are side by side, become one below the other. how to fix this?

I'm using the SMTP function to send Email (the Mail example). Unfortunately every time I get error "There was no response from the server". With the same server in Outlook I can send Emails. Can anybody help here?

may fail on non-English systems. The font names are different. E.g. "Tahoma fett" on my machine. The effect is that the text is not rendered properly. Especially if the orientation of the text is vertical.