//
// Solution:
// Under MSW the only way to associate data with a List
-// item independant of its position in the list is to
+// item independent of its position in the list is to
// store a pointer to it in its lParam attribute. However
// user programs are already using this (via the
// SetItemData() GetItemData() calls).
if ( !CreateControl(parent, id, pos, size, style, validator, name) )
return false;
- if ( !MSWCreateControl(WC_LISTVIEW, _T(""), pos, size) )
+ if ( !MSWCreateControl(WC_LISTVIEW, wxEmptyString, pos, size) )
return false;
// explicitly say that we want to use Unicode because otherwise we get ANSI
// versions of _some_ messages (notably LVN_GETDISPINFOA) in MSLU build
wxSetCCUnicodeFormat(GetHwnd());
- // for comctl32.dll v 4.70+ we want to have this attribute because it's
- // prettier (and also because wxGTK does it like this)
- if ( InReportView() && wxTheApp->GetComCtl32Version() >= 470 )
+ // for comctl32.dll v 4.70+ we want to have some non default extended
+ // styles because it's prettier (and also because wxGTK does it like this)
+ if ( InReportView() && wxApp::GetComCtl32Version() >= 470 )
{
::SendMessage(GetHwnd(), LVM_SETEXTENDEDLISTVIEWSTYLE,
- 0, LVS_EX_FULLROWSELECT);
+ 0, LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT);
}
return true;
#if !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
if ( style & wxLC_VIRTUAL )
{
- int ver = wxTheApp->GetComCtl32Version();
+ int ver = wxApp::GetComCtl32Version();
if ( ver < 470 )
{
wxLogWarning(_("Please install a newer version of comctl32.dll\n(at least version 4.70 is required but you have %d.%02d)\nor this program won't operate correctly."),
// Sets the column width
bool wxListCtrl::SetColumnWidth(int col, int width)
{
- int col2 = col;
if ( m_windowStyle & wxLC_LIST )
- col2 = -1;
+ col = 0;
- int width2 = width;
- if ( width2 == wxLIST_AUTOSIZE)
- width2 = LVSCW_AUTOSIZE;
- else if ( width2 == wxLIST_AUTOSIZE_USEHEADER)
- width2 = LVSCW_AUTOSIZE_USEHEADER;
+ if ( width == wxLIST_AUTOSIZE)
+ width = LVSCW_AUTOSIZE;
+ else if ( width == wxLIST_AUTOSIZE_USEHEADER)
+ width = LVSCW_AUTOSIZE_USEHEADER;
- return ListView_SetColumnWidth(GetHwnd(), col2, width2) != 0;
+ return ListView_SetColumnWidth(GetHwnd(), col, width) != 0;
}
// Gets the number of items that can fit vertically in the
if ( info.m_mask & wxLIST_MASK_STATE )
{
lvItem.mask |= LVIF_STATE;
- // the other bits are hardly interesting anyhow
- lvItem.stateMask = LVIS_SELECTED | LVIS_FOCUSED;
+ wxConvertToMSWFlags(0, info.m_stateMask, lvItem);
}
bool success = ListView_GetItem((HWND)GetHWND(), &lvItem) != 0;
// Deletes all items
bool wxListCtrl::DeleteAllItems()
{
- m_count=0;
return ListView_DeleteAllItems(GetHwnd()) != 0;
}
}
}
+WXLRESULT
+wxListCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+{
+#ifdef WM_PRINT
+ if ( nMsg == WM_PRINT )
+ {
+ // we should bypass our own WM_PRINT handling as we don't handle
+ // PRF_CHILDREN flag, so leave it to the native control itself
+ return MSWDefWindowProc(nMsg, wParam, lParam);
+ }
+#endif // WM_PRINT
+
+ return wxControl::MSWWindowProc(nMsg, wParam, lParam);
+}
+
// ----------------------------------------------------------------------------
// virtual list controls
// ----------------------------------------------------------------------------