CListCtrl vertikale scrollbar immer anzeigen
-
hey,
verwende, wie im titel erwähnt, eine für eine listbox die klasse CListCtrl um den inhalt von ordnern auf der festplatte anzuzeigen.
das ganze hat 2 spalten ( dateiname / datum&uhrzeit der letzten änderung)jetz wird die vertikale scrollbar ja nur dann angezeigt, wenn mehr items in der liste sin, als auf einmal angezeigt werden können.
ich will, dass diese scrollbar aber immer da is (der optik wegen)darum hab ich folgendes gemacht:
if(m_listsymptomfiles->GetItemCount()>11) m_listsymptomfiles->EnableScrollBar(SB_VERT,ESB_ENABLE_BOTH); else { m_listsymptomfiles->ShowScrollBar(SB_VERT,true); m_listsymptomfiles->EnableScrollBar(SB_VERT,ESB_DISABLE_BOTH); }das problem is allerdings, dass wenn weniger items drin sin als dargestellt werden können (eine scrollbar also nicht notwendig wäre) die deaktivierte scrollleiste nur beim ersten anzeigen da is.
wenn ich jetz allerdings das verzeichnis wechsle und dann wieder zurückwechsle wird die leiste trotz dem aufruf von showscrollbar nicht mehr angezeigt

vllt weiß da ja jemand von euch weiter.
mfg,
smuRf
-
wenn du die liste mit create uebergibst: WS_VSCROLL als style mit uebergeben
wenn du eine abgeleitete klasse von CListCtrl hast - bei OnPreCreateWindow cs.style |= WS_VSCROLL; angeben
wenn du es in ein dialog hast - in den einstellungen der liste das "vertical scroll" auf true setzen
-
im create hatte ich WS_VSCROLL eh drin, sonst würd die leiste ja nie angezeigt werden.
m_listsymptomfiles->CreateEx(WS_EX_CLIENTEDGE,LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS|WS_VSCROLL|WS_VISIBLE|WS_CHILD|LBS_NOTIFY,m_staticrect[5],this,(UINT)IDD_SYMPTOM_FILES);das problem is, wie gesagt, dass es ja 1x klappt.
wenn ich das programm starte und weniger als (in dem fall) 11 einträge sin in der listbox, wird die leiste disabled angezeigt.
wechsle ich dann das verzeichnis irgendwohin wo mehr einträge drin sind, wird die leiste natürlich enabled angezeigt, und wenn ich zurücwelchsle aufs 1. verzeichnis, is die scrollbar auf einmal net mehr da.
das ganze wird wie oben gepostet mit create erzeugt und zwar im hauptfenster, nicht in nem dialog. abgeleitet hab ich die klasse net.
sonst noch ideen?
-
Ich hatte selber mal rumprobiert, ich nehm mein vorherigen Post zurück, war alles blödsinn für diesen fall.
Kann dir da auch nicht helfen.