Ich habe mir mal die Mühe gemacht alle Änderungenan der MFC, die im VS-2010 SP1 enthalten sind, hier im Detail aufzuführen.
Viele Änderungen sind es nicht, wie man schnell sieht. Ich empfehle als weitere Quelle für Infos über den SP1 die bekannten Blogs des MS-C++ Teams und die KB.
http://blogs.msdn.com/b/vcblog/archive/2011/03/10/10139062.aspx
http://support.microsoft.com/kb/983509
Neue Samples finden sich nach dem SP1 Setup auf der Festplatte im folgenden Ordner:
C:\Program Files\Microsoft Visual Studio 10.0\Samples\1033\VC2010SP1Samples.zip
Für entsprechende bekannte Fixes habe den Text aus den Blogs übernommen. Alle anderen Änderungen habe ich durch einen Vergleich des Sourcecode mit WinMerge ermittelt. Codeänderungendie ich nicht direkt einem Fehler zuordnen konnte habe ich mit dem Prefix Change, markiert und natürlich die neuen Features entsprechend.
In einem späteren Artikel werde ich mich noch die Änderungenan CRT und STL genauer unter die Lupe nehmen.
Neues Feature: Direct2D Unterstützung (dokumentiert)
Direct2D, a hardware-accelerated, immediate-mode, 2-D graphics API that provides high performance and high-quality rendering for 2-D geometry, bitmaps, and text. For more information, visit the following Microsoft website: Direct2D.
http://msdn.microsoft.com/en-us/library/dd370990.aspx
http://msdn.microsoft.com/en-us/library/gg482719.aspx
Geänderte Dateien:
- afx.h, afxglobals.h, afxrendertarget.h, afxwin.h
- afxglobals.cpp, afxrendertarget.cpp, appui3.cpp, wincore.cpp
Anmerkung: Die Verwendung von Direct2D führt dazu, dass CoInitialize ausgeführt wird.
Neues Feature: Windows Animation Manager Unterstützung (dokumentiert)
Windows Animation Manager, which enables rich animation of user interface elements. For more information, visit the following Microsoft website: Windows Animation Manager.
http://msdn.microsoft.com/en-us/library/gg482719.aspx
Geänderte Dateien:
- afxanimationcontroller.h, afxanimationhelper.h, afxwin.h
- afxanimationcontroller.cpp
Bugfix: Korrektur eines Fehlers in den RDX Kompontenten (dokumentiert)
In the CDatabase/Crecordset MFC, the „DoFieldExchange“ variable does not work correctly in Visual Studio 2010.
http://connect.microsoft.com/VisualStudio/feedback/details/574974
Geänderte Dateien:
- dbrfx.cpp
Bugfix: Umgang mit SPI_GETNONCLIENTMETRICS in unterschiedlichen Windows Versionen (nicht dokumentiert)
Der interne Umgang mit unterschiedlichen Windows Versionen und SPI_GETNONCLIENTMETRICS wurde gefixed.
Geänderte Dateien:
- afxglobals.cpp, afxribbonbar.cpp, afxvisualmanageroffice2007.cpp, afxvisualmanagerwindows7.cpp
Change: Cleanup der MFCNext Klassen (nicht dokumentiert)
Das Cleanup für die neuen MFC-Next Klassen wurde geändert.
Geänderte Dateien:
- afxcontrolbarutil.h
- afxglobals.cpp, afxwinappex.cpp, ctlmodul.cpp
Bugfix: Fehler bei Anzeige in CFormView Klassen (nicht dokumentiert)
VC-2010 MFC CFormViewzeichnet Buttons beim Rollenfalsch, es erscheinen schwarze Blöcke
http://blog.m-ri.de/index.php/2010/08/28/bug-vc-2010-cformview-zeichnet-buttons-beim-rollen-falsch-es-erscheinen-schwarze-bloecke/
Geänderte Dateien:
- afxext.h
- viewform.cpp
Bugfix: CImageList::DrawIndirect wurde korrigiert (nicht dokumentiert)
CImageList::DrawIndirect funktioniert nicht korrekt weil cbSize nicht initialisiert wurde
http://blog.m-ri.de/index.php/2010/07/21/bug-in-der-mfc-von-vc-2010-in-cimagelistdrawindirect/
Geänderte Dateien:
- winctrl7.cpp
Change: Änderung des Suchalgorithmus für MFC Satellite DLLs (nicht dokumentiert)
Das Handling des Suchalgorithmus für die MFC Resource DLLs wurde geändert
Geänderte Dateien:
- appcore.cpp, dllinit.cpp
PS:
Erstaunlich, dass zwei der Bugs, die ich zur MFC gemeldet habe auch direkt in diesem SP1 gefixed wurden. Das ist eine Quote, die ich in den letzten 12 Jahren bei einem SP noch nie hatte 🙂
Nachtrag und Ergänzungen am 18.03.2011
durch Sven von http://www.speedproject.de
Infos zum Laden der dwmapi.dll
Die Datei dwmapi.dll wird nun explizit aus dem Systemverzeichnis geladen.
Geänderte Dateien:
- afxglobals.cpp
Infos zum Suchalgorithmus der MFC DLLs
Die Änderung des Suchalgorithmus für die zusätzlichen Sprachressourcen ist ebenfalls eine Schutzmaßname gegen das ‘Binary Planting’. Die Dlls werden jetzt nur noch aus dem Verzeichnis geladen, in dem sich die MFC-Dll befindet.
Infos zu dem geänderten Clennup der MFCNext Klassen
Der Grund für die Änderung beim Aufräumen ist wohl ein mögliches Speicherleck beim Beenden:
http://connect.microsoft.com/VisualStudio/feedback/details/577870/cmfcbutton-causes-memory-leak
Danke Sven!