- wxCommandEvent event(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, m_pParent->GetId());
- event.SetInt(m_nIndex);
- event.SetEventObject(m_pParent);
- m_pParent->ProcessCommand(event);
+ HWND hwndListbox = (HWND)m_pParent->GetHWND();
+
+ #ifdef __WIN32__
+ RECT rcUpdate;
+
+ if ( ::SendMessage(hwndListbox, LB_GETITEMRECT,
+ m_nIndex, (LPARAM)&rcUpdate) == LB_ERR )
+ {
+ wxLogDebug(wxT("LB_GETITEMRECT failed"));
+ }
+ #else // Win16
+ // FIXME this doesn't work if the listbox is scrolled!
+ size_t nHeight = m_pParent->GetItemHeight();
+ size_t y = m_nIndex * nHeight;
+ RECT rcUpdate ;
+ rcUpdate.left = 0 ;
+ rcUpdate.top = y ;
+ rcUpdate.right = GetDefaultMarginWidth() ;
+ rcUpdate.bottom = y + nHeight ;
+ #endif // Win32/16
+
+ InvalidateRect(hwndListbox, &rcUpdate, FALSE);
+
+ wxCommandEvent event(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, m_pParent->GetId());
+ event.SetInt(m_nIndex);
+ event.SetEventObject(m_pParent);
+ m_pParent->ProcessCommand(event);