Archive
CPJNSMTPConnection v2.89
Just to let everyone know that v2.89 of CPJNSMTPConnection has been released. Updates for this version include:
- AddTextBody and AddHTMLBody now allow the root body part’s MIME type to be changed. Thanks to Thane Hubbell for prompting this update.
- Added a CPJNSMTPBodyPart::GetBoundary method.
- Added some sample code to the sample app’s CPJNSMTPAppDlg constructor to show how to create a message used SMTP body parts. Thanks to Thane Hubbell for prompting this update.
- CPJNSMTPBodyPart::GetHeader now allows quoted-printable and raw attachments to be used
- The sample app is now linked against the latest OpenSSL v1.0.0b dlls
AA+ v1.45
Just to let everyone know that v1.45 of AA+ has been released. Updates for this version include:
- CAARefraction::RefractionFromApparent now returns a constant refraction value for all altitudes below a certain limit. Thanks to mehrzad khoddam for prompting this update.
- CAARefraction::RefractionFromTrue now returns a constant refraction value for all altitudes below a certain limit. Thanks to mehrzad khoddam for prompting this update.
CTrayNotifyIcon v1.65
Just to let everyone know that v1.65 of CTrayNotifyIcon has been released. Updates for this version include:
- Minor update to use DBG_UNREFERENCED_LOCAL_VARIABLE macro. Thanks to Jukka Ojanen for prompting this update.
CScintillaCtrl, CScintillaView & CScintillaDoc v1.26
Just to let everyone know that v1.26 of CScintillaCtrl, CScintillaView & CScintillaDoc has been released. Updates for this version include:
- Updated copyright details.
- Updated sample app to clean compile on VC 2010
- Updated class to work with Scintilla v2.22. New messages wrapped include: SCI_SETWHITESPACESIZE, SCI_GETWHITESPACESIZE, SCI_SETFONTQUALITY, SCI_GETFONTQUALITY, SCI_SETFIRSTVISIBLELINE, SCI_SETMULTIPASTE, SCI_GETMULTIPASTE, SCI_GETTAG, SCI_AUTOCGETCURRENTTEXT, SCI_SETADDITIONALCARETSVISIBLE, SCI_GETADDITIONALCARETSVISIBLE, SCI_CHANGELEXERSTATE, SCI_CONTRACTEDFOLDNEXT, SCI_VERTICALCENTRECARET, SCI_GETLEXERLANGUAGE, SCI_PRIVATELEXERCALL, SCI_PROPERTYNAMES, SCI_PROPERTYTYPE, SCI_DESCRIBEPROPERTY, SCI_DESCRIBEKEYWORDSETS. Also there were some parameter changes to existing messages.
COSMCtrl v1.13
Just to let everyone know that v1.13 of COSMCtrl has been released. Updates for this version include:
- Added support for a simple event handler mechanism to the class
- Reworked the sample app’s Refresh Tile, Tile Properties and Address Lookup functions to allow the user to click on the part of the map where they want the operation performed rather than using the current cursor position. This means that using these options from the main menu is now more useful. Thanks to Frits van Veen for suggesting this update.
- Implemented a Goto Coordinates Dialog in the sample app
- Updated the sample app to use a built in resource for the png default marker rather than a stand alone png file. Thanks to Frits van Veen for suggesting this update.
CSortedArray / CSortedArrayEx v1.43
Just to let everyone know that v1.43 of CSortedArray / CSortedArrayEx has been released. Updates for this version include:
Elements | Before (Function pointer array) | Before (Functor) | After (Function Pointer array) | After (Functor) |
100 | 34 | 7 | x2.125 | 6 (x1.16) |
1000 | 517 | 176 | 295 (x1.75) | 84 (x2.09) |
10000 | 7896 | 2398 | 3525 (x2.23) | 1098 (x2.18) |
100000 | 2696 | 529 | 336 (x8.03) | 97 (x5.45) |
1000000 | 21017 | 3284 | 378 (x55) | 125 (x26) |
10000000 | 208768 | 30605 | 899 (x232) | 458 (x66) |
I believe the reason we see a dramatic improvement in performance as the array size increases is the fact that std::sort uses an introsort algorithm (which is a quicksort which switches to a heapsort when the recursion reaches a certain depth). The more expert C++ developers out there may ask why not just use the standard STL collection classes instead of the old style MFC CArray classes. In my case, many of my classes are pure MFC classes and at the time of their initial development the MFC classes were the number one choice. Now if you are writing new code it really does make sense to use the STL classes but it is still nice to have the familiarity of the MFC collection classes with the performance of their STL brethren.
Elements | Before (Function pointer array) | Before (Functor) | After (Function Pointer array) | After (Functor) |
100 | 249 | 80 | 246 (x1.01) | 109 (x0.773) |
1000 | 1005 | 274 | 275 (x3.65) | 120 (x2.28) |
10000 | 913 | 229 | 45 (x20.29) | 13 (x17.61) |
50000 | 22587 | 5655 | 172 (x131) | 74 (x76) |
100000 | 90484 | 22683 | 379 (x238) | 154 (x147) |
300000 | 81606 | 20420 | 111 (x735) | 48 (x425) |
CTrayNotifyIcon v1.64
Just to let everyone know that v1.64 of CTrayNotifyIcon has been released. Updates for this version include:
- Minor update to code in SetTooltipText to code which handles unreferenced variable compiler warning
- Implemented a GetTooltipMaxSize method which reports the maximum size which the tooltip can be for a tray icon. Thanks to Geert van Horrik for this nice addition
- All places which copy text to the underlying NOTIFYICONDATA now use the _TRUNCATE parameter in their call to the Safe CRT runtime. This change in behaviour means that client apps will no longer crash if they supply data larger than this Windows structure can accommodate. Thanks to Geert van Horrik for prompting this update.
- All calls to sizeof(struct)/sizeof(first element) have been replaced with _countof
- Fixed a linker error when compiling the WTL sample app in release mode.
COSMCtrl v1.12
Just to let everyone know that v1.12 of COSMCtrl has been released. Updates for this version include:
- Now supports the Mapquest tile provider as documented at http://devblog.mapquest.com/2010/08/24/mapquest-opens-tiles-and-style-enables-rapid-data-updates/
- CreateCopyrightLinkCtrl method now works correctly if Windows is using a High DPI setting
- Fixed an ASSERT in the Draw method which could occur when m_bDrawZoomBarAsSlider is TRUE.
- The ControlAnchorPosition and offset CPoint values now refers to the edge of the child control which is closest to the border instead of the top left edge of the control. This makes it easier for client applications to control layout behaviour.
- Fixed a bug in the tile properties dialog in the sample app which would report the distance in meters instead of in Kilometers or Miles.
- The sample app has been updated to use the author’s CNominatim library to add comprehensive support for Nominatim searches and Address lookups
- Fixed a bug where the download thread would not be restarted if the control uses a Windows animation during panning
- DrawScaleBar has been refactored somewhat and now works correctly if Windows is using a High DPI setting