PJ's profilePJ Naughter's spacePhotosBlogListsMore Tools Help

PJ Naughter's space

Musings on Native mode Windows development using Visual C++
July 03

CAVICapWnd v1.12 update

Just to let everyone know that an update to v1.12 of CAVICapWnd has been released. Updates for this version include:

  • Updated the zip file to include correct sln and vcproj files
June 28

XTaskDialog v1.09

Just to let everyone know that v109 of XTaskDialog has been released. Updates for this version include:

  • Updated the sample apps project settings to more modern default values.
  • The supplied zip file now inclues a x64 Unicode DLL version of XTaskDialog built with VC 2008.
  • Fixed a bug in calling SystemParametersInfo(SPI_GETNONCLIENTMETRICS,... ). The issue is that the NONCLIENTMETRICS structure can be bigger depending on the value of the WINVER preprocessor value. The code now ensures that the original base size of NONCLIENTMETRICS is used to ensure it works on down level operating systems. For more information on this issue, please see the MSDN documentation on the NONCLIENTMETRICS stucture. Also the second parameter to SystemParametersInfo in the code was incorrectly being set to 0, it is now set to the sizeof the structure. Thanks to Dick Smith for reporting this issue.
  • Updated the code to be as independent as possible from the standard Windows preprocessor variables (WINVER, _WIN32_WINNT, _WIN32_WINDOWS & _WIN32_IE). Note the code still requires WINVER >= 0x500

CPJNSMTPConnection v2.83

Just to let everyone know that v2.83 of CPJNSMTPConnection has been released. Updates for this version include:

  • Updated copyright details
  • Fixed a bug where the Reply-To email address was not correctly added to the message. Thanks to Dmitriy Maksimov for reporting this issue.
  • Updated the sample app's project settings to more modern default values.
  • Updated the sample exe to ship with OpenSSL v0.98k
  • Fixed a bug in CPJNSMTPConnection::SendBodyPart where it would cause errors from OpenSSL when trying to send a body of 0 bytes in size. This can occur when MHTML based emails are sent and you are using a "multipart/related" body part. Thanks to "atota" for reporting this issue
June 11

CMapEx v1.0

It’s been a while since I released some new code on my web site as opposed to updates to existing code, so here goes<ggg>. CMapEx is a class derived from the MFC template class "CMap". It is designed to allow the "CompareElements" method which CMap uses at runtime, to be specified via a template parameter rather than via a global function. This approach is much more flexible and allows the way data is stored in the map to be configured at an instance level, rather than the annoying limitation in CMap which due to its design only allows you to control this globally i.e. if you have multiple map instances which happen to store the same types of data, then all of these instances must use the same "CompareElements" method. This is quite a limitation which I have just recently encountered in one of my projects.

May 28

My New Development Machine + Windows 7

Just a note to let you all know that I had done a write up of my new dev machine on my web site at http://www.naughter.com/computers.html. Here’s the details:

An Intel Core i7 Quad Extreme Processor. This is the top of the range Core i7-965 processor running at 3.2GHz with 4 cores and 8 threads. I also used a Zalman CNP9900 LED CPU Cooler. The whole blue glow from the various fans inside the case is very cool looking thro the clear side window in the case.

An Asus P6T6 WS Revolution Workstation Motherboard

6 sticks of 2GB Corsair XMS3 DDR 1600Mhz 2PC3200 memory. This provides a total of 12GB of main memory and can take advantage of the triple channel memory support of the X58 motherboard.

2 Western Digital VelociRaptor 10000RPM 300GB SATA drives in a RAID0 array giving, this gives a really fast setup for my boot partition.

1 Western Digital Caviar 2TB SATA2 drive as a "data" drive

A factory Overclocked EVGA GeForce GTX 295 Graphics card

Gigabyte 3D Mars Silver Big Tower Case

Corsair 1000 Watt Powersupply

The OS installed is Windows 7 x64 Release Candidate. I will be updating it to the gold version when it is released (hopefully without having to do a fresh reinstall<ggg>)

LG DVD_RW Blue-Ray & HD-DVD Drive.

2 DELL 30" 3008WFP LCD monitors. This provides a lovely multi monitor solution with each display running at its native resolution of 2560 * 1600!

This machine is a pretty high end rig and should serve my very well for development purposes going forward. With the amount of memory onboard it should be easily able to handle a number of simultaneous virtual machines which is always handy for testing purposes. Since installing Windows 7 on it, I must admit that MS really has got it right after the whole Vista debacle. Everything just fits together nicely and performance is very good. The only thing I still pine for is the XP style Classic Start menu which has been completely removed from Windows 7. With the new Pin to TaskBar functionality and such large monitors I rarely ever use the start menu anyway now, instead preferring to use the taskbar shortcuts directly for my most used programs. The other thing I miss is not having the Start-> Run command easily available. I'm sure if I Googled that I could find a command line shortcut to make it available via a pinned shortcut on the taskbar. UAC on 7 seems to be much more toned down than Vista which helps to make you day to day experience a whole lot more pleasant. The Virtual Windows XP in Windows 7 is a really great feature and has already helped me to keep my old Desktop printer going as well as being able to use the Cisco VPN client which is only available for x86 versions of Windows. I've also run a few games on the new PC to give it a good try out. I've tried Crysis, Racedriver Grid and Far Cry 2 and the visuals in these games are absolutely stunning. PC gaming technology has really progressed in the last few years. I would also like to think my accounts manager at Komplett, namely Rafal Cyranski for their great service. They’re truly a great company to do business with.

May 24

W3Mfc v1.91 / CWSocket/CSSLSocket v1.28 /CThreadPoolServer v1.33 / SocClient v1.03 / SocServer v1.03

Just to let everyone know that v1.91 of W3MFC, v1.28 of CWSocket/CSSLSocket, v1.33 of CThreadPoolServer, v1.03 of SocClient & v1.03 of SocServer has been released. Updates for this version include:

  • Updated copyright details
  • Updated the sample app's project settings to more modern default values.
  • Removed some outstanding VC 6 style code from the codebase
  • Removed the operator= and copy constructor support from the CSSLContext and CSSL classes. This avoids de-allocation problems in the respective destructor classes when one of these contexts is shared between two C++ class instances. Thanks to Dmitriy Maksimov for reporting this bug.
  • Removed use of CT2A throughout the code.
  • Reworked all token parsing code to use CString::Tokenize.
  • Updated W3MFC binary to now link to OpenSSL 0.9.8k.
May 17

Splasher v1.50

Just to let everyone know that v1.50 of Splasher has been released. Updates for this version include:

  • Updated copyright details
  • Removed VC 6 style classwizard comments from the code.
  • Updated code to compile correctly using _ATL_CSTRING_EXPLICIT_CONSTRUCTORS define
  • Updated CSplashWnd::SetTransparent to allow the alpha transparency level as well as the flags passed to SetLayeredWindowAttributes to be completed specified
  • Updated code to clean compile on VC 2008.
  • Code now compiles cleanly using Code Analysis (/analyze)
  • The code now only supports VC 2005 or later.
May 04

CPJNPOP3Connection v1.46

Just to let everyone know that v1.46 of CPJNPOP3Connection has been released. Updates for this version include:

  • Updated copyright details.
  • Updated the sample app's project settings to more modern default values.
  • Removed the parsing methods from the CPJNPOP3Message class. For comprehensive support for message parsing please take a look at CDO for Windows 2000.
  • Extensively reworked the parsing code to use CByteArray derived classes to hold parsed responses instead of CStringA instances. This handles the unusual but legal situation where a message contains embedded nulls. Thanks to Sergey Lysenko for reporting this issue.
  • Fixed a bug in ReadUIDLResponse when parsing the message ID
  • The code in Connect now correctly validates that a timestamp has been provided if doing APOP authentication
April 30

AA+ v1.37

Just to let everyone know that v1.37 of AA+ has been released. Updates for this version include:

  • Fixed a bug where the M values in CAARiseTransitSet::Rise were not being constrained to between 0 and 1. Thanks to Matthew Yager for reporting this issue.

CScintillaCtrl, CScintillaView & CScintillaDoc v1.24 Refresh

Just to let everyone know that a refresh of v1.24 of CScintillaCtrl, CScintillaView & CScintillaDoc has been released. Updates for this version include:

  • Updated the project file to remove the now defunct manifest file. Thanks to "marshal" for reporting this issue.

EnumSerialPorts v1.20

Just to let everyone know that v1.20 of EnumSerialPorts has been released. Updates for this version include:

  • Updated copyright details.
  • Updated the sample app's project settings to more modern default values.
  • Updated the sample app to log the time taken for the various methods.
April 29

MTUG Presentation

On Monday this week I did a presentation on using SQLCLR to the Cork Microsoft Technology User Group down at the Imperial Hotel on the South Mall. It provided a simple developer based introduction on how to write plug-ins for SQL Server 2005 & 2008. The example I developed from first principles was a SHA-256 hash User Defined Type. I also demonstrated the automatic deployment and debugging features of Visual Studio. It was my first User Group presentation and I must admit that I was very nervous. Once I got into it, all went well and people said that it was informative and useful. Hopefully I will get the chance to do more presentations in the future. I also raffled off a MSDN premium as a prize for filling in the evaluation forms. A bit thanks to Joe Gill who handles MTUG who facilitated me to do the presentation.

April 12

CPL++ v1.29

Just to let everyone know that v1.29 of CPL++ has been released. Updates for this version include:

  • Updated copyright details.
  • Removed VC 6 style classwizard comments from the code.
  • Updated code to compile correctly using _ATL_CSTRING_EXPLICIT_CONSTRUCTORS define
  • The code now only supports VC 2005 or later.
  • Code now compiles cleanly using Code Analysis (/analyze)
  • Updated code to clean compile on VC 2008.
  • Now supports Vista specific registration using a GUID. This is required to support task links being associated with a Control Panel item.
  • RegisterCategory now supports per user registration. It has also been renamed to RegisterXPCategory
  • Now supports Vista specific category registration via RegisterVistaCategory.
  • Now supports Vista multi category registration via RegisterVistaCategories
  • Now supports Vista specific canonical name registration via RegisterCanonicalName
  • Now supports Vista specific task link registration via RegisterTaskLinks
  • RegisterApplet now has support for replacable parameters. The two supported values are %MODULE% which is the full path to the current DLL and %APPPATH% which represents the directory associated with %MODULE%.
  • Now supports Vista specific safe mode registration via RegisterSafeMode
  • Now supports XP multi category registration via RegisterXPCategories
March 28

AA+ v1.36

Just to let everyone know that v1.36 of AA+ has been released. Updates for this version include:

  • Fixed a bug in CAARiseTransitSet::Rise where the cyclical nature of a RA value was not taken into account during the interpolation. In fact Meeus in the book even refers to this issue as "Important remarks, 2." on page 30 of the second edition. Basically when interpolating RA, we need to be careful that the 3 values are consistent with respect to each other when any one of them wraps around from 23H 59M 59S around to 0H 0M 0S. In this case, the RA has increased by 0H 0M 1S of RA instead of decreasing by 23H 59M 59S. Thanks to Corky Corcoran and Danny Flippo for both reporting this issue.
  • Fixed a bug in the calculation of the parameter "H" in CAARiseTransitSet::Rise when calculating the local hour angle of the body for the time of transit.
March 19

AppSettings v1.08

Just to let everyone know that v1.08 of AppSettings has been released. Updates for this version include:

  • Updated copyright details.
  • Updated the sample app solution settings to use more reasonable defaults
  • The IAppSettings interface now supports a new GetSections method. This returns all the root sections which a configuration file has. Thanks to Rolf Kristensen for prompting this nice addition to the classes.
  • Updated the IAppSettings::GetSection method to support a boolean "bWithValues" parameter which determines if the returned string array should or should name include the values. This allows client code to easily get all the sections names. Thanks to Rolf Kristensen for providing this nice addition to the classes.
  • Reworked most of the internal code which does heap allocations using "new" to instead now use ATL::CHeapPtr.
March 16

CPJNSNTPClient v1.14

Just to let everyone know that v1.14 of CPJNSNTPClient has been released. Updates for this version include:

  • Updated copyright details.
  • Included missing VC 2005 solution and project files in the download. Thanks to Michael Haephrati for reporting this issue.

AA+ v1.35

Just to let everyone know that v1.35 of AA+ has been released. Updates for this version include:

  • Fixed a bug in CAAParabolic::Calculate(double JD, const CAAParabolicObjectElements& elements) in the calculation of the heliocentric rectangular ecliptical, the heliocentric ecliptical latitude and the heliocentric ecliptical longitude coordinates. The code incorrectly used the value "omega" instead of "w" in its calculation of the value "u". Unfortunately there is no worked examples in Jean Meeus's book for these particular values, hence resulting in my coding errors. Thanks to Jay Borseth for reporting this bug.
  • Fixed a bug in CAANearParabolic::Calculate(double JD, const CAANearParabolicObjectElements& elements) in the calculation of the heliocentric rectangular ecliptical, the heliocentric ecliptical latitude and the heliocentric ecliptical longitude coordinates. The code incorrectly used the value "omega" instead of "w" in its calculation of the value "u". Unfortunately there is no worked examples in Jean Meeus's book for these particular values, hence resulting in my coding errors. Thanks to Jay Borseth for reporting this bug.
February 12

DtWinver v1.79

Just to let everyone know that v1.79 of DtWinVer has been released. Updates for this version include:

  • Updated the VC 2005 project file to use more reasonable default project settings
  • Updated copyright details
  • Includes provisional support for the Windows 7 Professional SKU. Note that the code currently assumes that the BUSINESS SKU value refers to the newly documented SKU of "Windows 7 Professional". I have not found any information to confirm or deny this but this should become clearer as we approach the release of "Windows 7. Any feedback on this would be much appreciated.

AA+ v1.34

Just to let everyone know that v1.34 of AA+ has been released. Updates for this version include:

  • Fixed a seemingly copy and paste bug in CAAMoon::EclipticLongitude. The layout of the code to calculate the "ThisSigma" value was incorrect. The terms involving any value of M was being multiplied by E. This was incorrect as documented at the bottom of page 338 from the second edition of Meeus's book. The correct logic is to multiple only terms which involve +1M or -1M by E and to multiple any terms which involved 2M or -2M by E*E. With the bug fixed the worked example 47.a from the book now gives: 133.16726428105474 degrees. This is a much closer result to the value as reported in the book which is 133.167265. The previous buggy code was giving the value of 133.16726382897039 degrees for the Moons apparent Longitude. The error in this example is 0.001627 arc seconds of a degree. This error value is well within the actual reported accuracy of 10 arc seconds for the code, but you would expect this error to increase as the eccentricity of earths orbit increases. Thanks to Neoklis Kyriazis for reporting this bug.
February 11

CScintillaCtrl, CScintillaView & CScintillaDoc v1.24

Just to let everyone know that v1.24 of CScintillaCtrl, CScintillaView & CScintillaDoc has been released. Updates for this version include:

  • Updated the project file to remove VC 6 upgrade settings.
 
Thanks for visiting!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.