wxFLAGS_MEMBER(wxDOUBLE_BORDER)
wxFLAGS_MEMBER(wxRAISED_BORDER)
wxFLAGS_MEMBER(wxSTATIC_BORDER)
- wxFLAGS_MEMBER(wxNO_BORDER)
+ wxFLAGS_MEMBER(wxBORDER)
// standard window styles
wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
wxFLAGS_MEMBER(wxCLIP_CHILDREN)
wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
wxFLAGS_MEMBER(wxWANTS_CHARS)
- wxFLAGS_MEMBER(wxNO_FULL_REPAINT_ON_RESIZE)
+ wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
wxFLAGS_MEMBER(wxVSCROLL)
wxFLAGS_MEMBER(wxHSCROLL)
const wxPoint& pos,
const wxSize& size,
long style,
- const wxValidator& validator,
+ const wxValidator& wxVALIDATOR_PARAM(validator),
const wxString& name)
{
#if wxUSE_VALIDATORS
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
+#if wxUSE_UNICODE
+ ::SendMessage(GetHwnd(), LVM_SETUNICODEFORMAT, TRUE, 0);
+#endif
+
// 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 ( (wstyle & LVS_REPORT) && wxTheApp->GetComCtl32Version() >= 470 )
return SetItem(info);
}
+wxRect wxListCtrl::GetViewRect() const
+{
+ wxASSERT_MSG( !HasFlag(wxLC_REPORT | wxLC_LIST),
+ _T("wxListCtrl::GetViewRect() only works in icon mode") );
+
+ RECT rc;
+ if ( !ListView_GetViewRect(GetHwnd(), &rc) )
+ {
+ wxLogDebug(_T("ListView_GetViewRect() failed."));
+
+ wxZeroMemory(rc);
+ }
+
+ wxRect rect;
+ wxCopyRECTToRect(rc, rect);
+
+ return rect;
+}
+
// Gets the item rectangle
bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const
{
return m_count;
}
-// Retrieves the spacing between icons in pixels.
-// If small is TRUE, gets the spacing for the small icon
-// view, otherwise the large icon view.
+wxSize wxListCtrl::GetItemSpacing() const
+{
+ const int spacing = ListView_GetItemSpacing(GetHwnd(), (BOOL)HasFlag(wxLC_SMALL_ICON));
+
+ return wxSize(LOWORD(spacing), HIWORD(spacing));
+}
+
int wxListCtrl::GetItemSpacing(bool isSmall) const
{
return ListView_GetItemSpacing(GetHwnd(), (BOOL) isSmall);
}
break;
- // when using MSLU we get ANSI messages sometimes, apparently
-#if wxUSE_UNICODE_MSLU
- case LVN_GETDISPINFOA:
-#endif // wxUSE_UNICODE_MSLU
case LVN_GETDISPINFO:
if ( IsVirtual() )
{
if ( lvi.mask & LVIF_TEXT )
{
wxString text = OnGetItemText(item, lvi.iSubItem);
-#if wxUSE_UNICODE_MSLU
- if ( nmhdr->code == LVN_GETDISPINFOA )
- {
- if ( !::WideCharToMultiByte
- (
- CP_ACP,
- 0, // no flags
- text,
- text.length() + 1,
- (char *)lvi.pszText,
- lvi.cchTextMax,
- NULL, // default character
- NULL // [out] def char used flag
- ) )
- {
- wxLogLastError(_T("WideCharToMultiByte()"));
- }
- }
- else
-#endif // wxUSE_UNICODE_MSLU
- {
- wxStrncpy(lvi.pszText, text, lvi.cchTextMax);
- }
+ wxStrncpy(lvi.pszText, text, lvi.cchTextMax);
}
// see comment at the end of wxListCtrl::GetColumn()