Komfortabler Dateimanager mit vielen Funktionen

Fehler in CListCtrl::SortGroups

By Sven on 28.04.2008 - 10:00 in MFC, Visual Studio 2008

Die MFC-Unterstützung für die ComCtl32.dll von Windows XP war ja lange ziemlich mager, und so habe ich mir damals meine eigenen Wrapper-Funktionen geschrieben. Die MFC9 von Visual Studio 2008 ist mittlerweile auf dem aktuellen Stand, und so habe ich meine Wrapper-Funktionen zugunsten der MFC-Funktionen entfernt.

Dabei ist mir aufgefallen, dass in der CListCtrl-Methode SortGroups die Parameter vertauscht sind. Die Implementation schaut so aus:

AFX_INLINE BOOL CListCtrl::SortGroups(PFNLVGROUPCOMPARE _pfnGroupCompare, LPVOID _plv)
{
    ASSERT(::IsWindow(m_hWnd));
    return (BOOL)::SendMessage(m_hWnd, LVM_SORTGROUPS, (WPARAM)(LPARAM)_plv, (LPARAM)_pfnGroupCompare );
}

während das API-Makro ListView_SortGroups aus der commctrl.h so lautet:

#define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) \
    SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)(_pfnGroupCompate), (LPARAM)(_plv))

Beim Aufruf von SortGroups bekommt die Listenansicht also vertauschte WPARAM und LPARAM-Parameter und macht entweder gar nichts oder stürzt ab.

Damit SortGroups richtig funktioniert, muss es in afxcmn3.inl wie folgt geändert werden:

AFX_INLINE BOOL CListCtrl::SortGroups(PFNLVGROUPCOMPARE _pfnGroupCompare, LPVOID _plv)
{
    ASSERT(::IsWindow(m_hWnd));
    return (BOOL)::SendMessage(m_hWnd, LVM_SORTGROUPS, (WPARAM)_pfnGroupCompare, (LPARAM)_plv );
}

Zu diesem Problem gibt es übrigens auch einen Connect-Eintrag. In diesem wird das Problem der vertauschten Parameter klar erläutert, aber Microsoft kann es ohne Demoprojekt oder Minidump nicht nachvollziehen…

Es gibt 5 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

  1. meh sagt:

    Gleichzeitig ist der Connect-Eintrag aber auch mit “Fixed” markiert.

  2. Oliver sagt:

    @meh: Die Datei 343200_intl_i386_zip.exe hast du von Connect schon gezogen? Habe das hier eben gelesen, aber vielleicht ist es darin schon behoben?!

  3. Sven sagt:

    Lassen wir uns mit der nächsten Version überraschen.

    @Oliver: Was beinhaltet diese Datei?

  4. Oliver sagt:

    @Sven: Diverse Fixes für VS9. Sie nennen es “Hotfix Rollup” …

  5. Sven sagt:

    KB946581 dürfte aber mehr oder weniger nur Probleme bzgl. des Web Developers beheben. Aber schon möglich, dass es mit dem Feature Pack korrigiert wurde. Kann ich aber mangels Installation nicht prüfen.

Top