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!
Denn mal Gratulation zu den Bugfixes. Trage heute gerade mit Stoz mein „Bugslasher T-Shirt“ die gab’s damals zu Studio-2003-Zeiten. Paßt wieder. 😀
Ein paar kleine Ergänzungen:
1. ‚dwmapi.dll‘ wird nun explizit aus dem Systemverzeichnis geladen (afxglobals.cpp)
2. 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.
3. 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
Herzlichen Dank für Deinen produktiven Beitrag.
Ich werde Deine Ergänzungen in meinen Artikel aufnehmen.
Hallo Martin,
weist du vielleicht wo findet man vcredist_x86.exe für VS 2010 SP1?
Das hier ist alt:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84
Hi Plamen!
Nein! Aktuell wüsste ich nicht, dass es die schon gibt. Auch in den MSDN subscriber Downloads habe ich es nicht gefunden.
Ich frage nach.
Danke Martin!
Dann kannst du auch fragen, warum vcredist_x86.exe nicht vom SP Istaller geliefert wird (gleich wie die einzelne DLLs im Redist Ordner).
Grüß!
Der Grund ist eigentlich offensichtlich. Man kann ja jetzt wieder die DLLs in daseigene Programmverzeichnis installieren oder eben nach Windows\System32. Die Mergemodule liegen ja bei.
Einen wirklichen Grund für ein VCREDIST wie seit VS-2005 ist eigentlich entfallen, denn diese DLLs liegen nicht mehr im WinSxS und werden auch dort voraussichtlich nie wieder landen..
Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c32f406a-f8fc-4164-b6eb-5328b8578f03
Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C68CCBB6-75EF-4C9D-A326-879EAB4FCDF8
Danke!