InitCommonControls() und seine Tücken
Unlängst hatte ich das Problem, dass ich ein Windows-Programm entwickelt habe, welches einige Common Controls verwendet. In alter (16bit) Gewohnheit habe ich die Common Controls mit dem Funktionsaufrauf InitCommonControls() initialisiert.
Mein Programm lief einwandfrei unter Windows XP, aber unter Windows 2000 bekam ich beim Laden eines Dialogs, welcher das SysDateTimePick32 Control nutzte, die Fehlermeldung: “Fensterklasse nicht gefunden”.
In der oben verlinkten Dokumentation zu InitCommonControls() steht bereits die Warnung, dass bei den Controls der Version 5 nur die ICC_WIN95_CLASSES initialisiert werden. In meiner alten MSDN-Version von 1998 war diese Warnung jedoch nicht enthalten.
Folgende Seite bietet eine schöne Aufschlüsselung, was in welcher Windows Version geladen wird:
Also: Wenn möglich, auf 32bit Windows immer InitCommonControlsEx() verwenden und nicht vergessen, die entsprechenden Flags richtig zu setzen.