Click here to Skip to main content
15,881,600 members
Articles / Desktop Programming / MFC

The Ultimate Toolbox - Updates and User Contributions

Rate me:
Please Sign up or sign in to vote.
4.79/5 (26 votes)
12 Feb 2013CPOL8 min read 254.5K   23.6K   170  
Updates and User Contributions for the Ultimate Toolbox Libraries
<html>

<head>

<title>Ultimate ToolBox Change History</title>
<style>
BODY, P, H1, H2, H3, H4, H5, H6, LI, TD, TH, DD, DT
{
	font-family: Verdana, Helvetica, Arial, sans-serif;
	font-size: 10pt;
	color: black;
}
BODY
{
	background-color: #ffffff;
	color: #000000;
}
LI,UL,OL
{
	list-style-image: none;
}
H1, H2, H3, H4, H5, TH
{
	font-weight: bold;
}
H2, H3, H4, H5
{
	color: #009999;
}
H1
{
	font-size: 16pt;
	color: #007777;
}
H2
{
	font-size: 13pt;
}
H3
{
	font-family: Arial, sans-serif;
	font-size: 11pt;
}
H4
{
	font-size: 10pt;
	margin-bottom: 2px;
}
H5
{
	font-size: 9pt;
	margin-bottom: 2px;
}
H6
{
	color: #626262;
	font-size: 65%;
	font-weight: normal;
}
CODE
{
	color: #1111BB;
	font-family: "Courier New", Courier, mono;
	font-weight: bold;
}</style>

</head>
<body>

<h1>Ultimate TCP/IP Change History</h1>
<h2>Version 4.2 - Update 01</h2>
<h3>

<span id="intelliTXT">
Changes and fixes for 64-bit compilation.</span></h3>

<span id="intelliTXT0">
<p>The major source file changes referenced in this update should all be 
annotated with 'v4.2 - update 01' in comments. The scope of these changes is for 
the most part concerned with checking for issues arising from VS2008 and 64-bit 
compilation.</p>
<p>The goal of this update is to test VS2008 and 64-bit compilation of the core source 
files, while retaining backward compatibility with VC6, VS2003, and VS2005. 
VS2008 64-bit configurations were created for testing using the x64 cross compiler on Win32 
(Windows XP SP2) - these added configurations 
are not included in this download.</span></p>
<p>The projects have not been run on a Win64 platform - this update is just 
intended as a starting point for testing. New warnings introduced by the x64 
builds have been left in, pending run time tests. Comments welcome.</p>
<p>A new file was added (UTCP64Bit.h) to the main Include directory to 
centralize macro redefinitions. For the History control and security certificate 
related dialogs some minor return value changes for DLGPROC and WNDPROC return 
values were put in place. </p>
<h2>Version 4.2 - Initial Code Project release</h2>

<p>The main focus of Ultimate TCP/IP Version 4.2 has been to update the 
 source code for use with Microsoft Visual Studio 2005, while maintaining 
 compatibility with Visual Studio 6.0. </p>

<h4>Unicode builds:</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p style="font-style: italic;">
	<span style="font-style: normal">New Visual C++ 8.0 
 projects now default to Unicode compilation</span>.</p></li>
</ul>

<p style="margin-left: 40px;">Much of the Ultimate TCP/IP code is char 
 based, having its origins in the implementation of several DOD RFCs dealing 
 primarily with transmission protocols using 7 and 8 bit ASCII based command 
 sets and data formats. For this reason updating the code to support compilation 
 under unicode constitutes a special case, in that unlike most Windows 
 libraries it is desirable to maintain the core code as char based while 
 providing a unicode interface where necessary for ease of use within a 
 wide char build.</p>

<p style="margin-left: 40px;"><!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->In 
 some cases, it made sense to rework the classes for full unicode compatibility 
 substituting _TCHAR for char and using the generic text mappings. Other 
 classes (especially those encapsulating ANSI based internet protocols) 
 were modified to provide the user with wide char overloads when used in 
 a unicode build. This was especially important for those classes where 
 a wide char version of a function might be convenient for the user, but 
 the char equivalent will still be called from char based internal code.</p>

<p style="margin-left: 40px;">Some functions (overrides) that act as notification 
 callbacks concerning events where protocol data is returned will still 
 return ANSI text. <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}--></p>

<h4>Warnings:</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li style="margin-left: -20px;"
		class=kadov-p><p style="margin-left: 40px;">A primary goal of the 
 Ultimate TCP/IP 4.2 release was clean compilation at Warning Level 4 in 
 both VS2005 and VS6.0.</p></li>
</ul>

<p style="margin-left: 40px;">There were several issues to be addressed 
 here. It was found that many areas of the code files evoked warnings at 
 level 3 in VS8 that are either new to VS7/8 or VC6 level 4 warnings re-classified 
 as level 3. Also, there are new warnings dealing with 64 bit portability 
 (on by default in new VS2005 projects).</p>

<p style="margin-left: 40px;">Level 4 warnings invoked by the STL code 
 that were present in VC6 builds have been addressed.</p>

<p style="margin-left: 40px;">With regard to 64 bit portability, Ultimate 
 TCP/IP 4.2 is not intended to provide full 64 bit compilation, though 
 some changes were made to suppress these warnings. In some cases functions 
 taking integer parameters to designate buffer sizes have been updated 
 to take size_t, which should help users of the class using values returned 
 from strlen etc. to avoid warnings when calling the UT code. Future releases 
 may address this issue more fully.</p>

<p style="margin-left: 40px;"><span style="font-style: italic;">Note: Some 
 portions of the code using static functions may give rise to warning C4710 
 (function not inlined). This warning occurs after the compiler has read 
 the last line of code in the compiland, and can only be discarded on a 
 per-project basis.</span> </p>

<h4>Updates to the C Run Time:</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>With the introduction of VC8, many CRT string 
 handling functions are deprecated in favor of their safe equivalents. 
 </p></li>
</ul>

<p style="margin-left: 40px;">Version 4.2 only partially addresses this 
 issue, preferring to retain (for now) the non-safe string functions. Pragmas 
 are provided to disable this warning in the core Ultimate TCP/IP code 
 on a per file basis - <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->these 
 pragmas should <span style="font-style: italic;">not</span> affect warning 
 settings beyond the scope of each compiland. Future versions of Ultimate 
 TCP-IP should address this issue more fully, as do Ultimate Toolbox and 
 Ultimate Grid.</p>

<p style="margin-left: 40px;"><span>We have tried to limit the use of pragmas 
 in disabling warnings for the Ultimate TCP/IP code. Beyond the safe string 
 warnings, most pragmas dealing with warnings should be disabling warnings 
 arising from the STL or SDK. </span></p>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>Several POSIX function names were deprecated in 
 favor of their ISO equivalents.</p></li>
</ul>

<p style="margin-left: 40px;">All functions generating warning C4996 related 
 to their POSIX name declarations were changed to use their ISO name declaration. 
 This change is backward compatible to VC6. Some of these functions remain 
 deprecated in favor of their safe counterparts.</p>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>Files referencing headers no longer included in 
 VC8 were updated (e.g. iostream vs iostream.h). This is change does not 
 break VC6.0 compatibility.</p></li>
</ul>

<h4>Changes to the Platform SDK</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>There have been changes to the Platfom SDK with 
 the release of Visual Studio 2005 and the Platform SDK 2003. </p></li>
</ul>

<p style="margin-left: 40px;">If you are using the Ultimate TCP-IP secure 
 client and server classes with 2005 it is no longer necessary to install 
 a separate version of the Platform SDK to compile the UTSecureLayer.DLL. 
 However, some key headers and lib files required by Visual Studio 6.0 
 are no longer contained in the revised Platform SDK 2003. <!--kadov_tag{{<spaces>}}-->&nbsp;<span 
 style="font-weight: bold;"><!--kadov_tag{{</spaces>}}-->VC6.0 users compiling 
 the secure code will need to access a previous version of the Platform 
 SDK</span>.</p>

<h4>UTSecureLayer.DLL builds:</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>With version 4.2, the UTSecureLayer builds have 
 been renamed based on character set and release/debug version. </p></li>
</ul>

<p style="margin-left: 40px;">Where previously code built against the secure 
 DLL had to assume that the build was compatible with the current settings, 
 we've separated it into UTSecureLayer.DLL, <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->UTSecureLayerU.DLL, 
 <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->UTSecureLayerD.DLL, 
 <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->UTSecureLayerUD.DLL 
 based on Unicode / Debug settings. Some project settings may need to be 
 reset to reflect this.</p>

<h4>Breaking changes:</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>CUT_DataSource and derived classes</p></li>
</ul>

<p style="margin-left: 40px;">In preparing the Ultimate TCP/IP for wide 
 char compilation, most file names and paths were changed to use _TCHAR 
 strings, and this is reflected in the interfaces to the datasouces which 
 take file names.</p>

<p style="margin-left: 40px;">The interfaces that were specifying buffer 
 or data lengths as unsigned int now take size_t, which may require changes 
 to existing derived classes.</p>

<p style="margin-left: 40px;">The datasource classes themselves remain 
 primarily char based, as they are mostly used internally by ANSI based 
 protocol classes. In future we may provide wide char or _TCHAR based classes.</p>

<p style="margin-left: 40px;">The strings returned in the UT_ARTICLEINFO 
 structure will be wide char for _UNICODE builds. This may break code that 
 was attempting to decode strings with calls to CUT_HeaderEncoding methods, 
 which take only char. For this reason, and added convenience, the strings 
 returned in this structure will have been decoded if necessary, and the 
 structure now contains a text representation of the associated character 
 set for the applicable fields. Note that only Author and Subject are routinely 
 encoded in an NNTP header.</p>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p style="margin-left: 0px;">CUT_Msg, CUT_HeaderEncoding 
 - decoding functions that previously took a reference to an LPCTSTR to 
 return the charset now take an LPSTR that should be declared/allocated 
 with space to receive the charset.</p></li>
</ul>

<h4>Miscellaneous fixes:</h4>

<ul style="list-style: disc;"
	type=disc>
	
	<li class=kadov-p><p>CUT_SMTPClient: Was failing to include Reply-To 
 header if set in CUT_Msg when sending.</p></li>
	
	<li class=kadov-p><p>CUT_NNTPClient: UT_ARTICLEINFO now returns correct 
 References header string.</p></li>
</ul>

</body>

</html>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Canada Canada
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.
This is a Organisation

476 members

Comments and Discussions