diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 3ee1003c8e..be595ae60f 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -1655,6 +1655,10 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) // work around is to simply catch both versions and hope that it // works (why should this message exist in ANSI and Unicode is // beyond me as it doesn't deal with strings at all...) + + // Tip from www.deja.com: can use CCM_SETUNICODE to set + // Unicode or ANSI mode. We might consider doing that for + // consistency in ANSI mode. case HDN_BEGINTRACKA: case HDN_BEGINTRACKW: eventType = wxEVT_COMMAND_LIST_COL_BEGIN_DRAG; @@ -1713,7 +1717,65 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) } } break; +#if 0 + case HDN_ITEMCHANGINGW: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_ITEMCHANGEDA: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_ITEMCHANGEDW: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_ITEMCLICKA: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_ITEMCLICKW: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_ITEMDBLCLICKA: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_ITEMDBLCLICKW: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_DIVIDERDBLCLICKA: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_DIVIDERDBLCLICKW: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } + case HDN_GETDISPINFOA: + { + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } +#endif + case HDN_GETDISPINFOW: + { + LPNMHDDISPINFOW info = (LPNMHDDISPINFOW) lParam; + // This is a fix for a strange bug under XP. + // Normally, info->iItem is a valid index, but + // sometimes this is a silly (large) number + // and when we return FALSE via wxControl::MSWOnNotify + // to indicate that it hasn't yet been processed, + // there's a GPF in Windows. + // By returning TRUE here, we avoid further processing + // of this strange message. + if (info->iItem > GetColumnCount()) + return TRUE; + else + return wxControl::MSWOnNotify(idCtrl, lParam, result); + } default: return wxControl::MSWOnNotify(idCtrl, lParam, result); } @@ -1735,7 +1797,9 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) case LVN_BEGINRDRAG: case LVN_COLUMNCLICK: #ifdef LVN_HOTTRACK - case LVN_HOTTRACK: + // Under XP, this does _not_ give us a valid lParam, + // so we get a crash. +// case LVN_HOTTRACK: #endif case LVN_ITEMCHANGED: case LVN_ITEMCHANGING: