2017-12-28 20 views
0

erhöhen In Win32-Anwendung, wie die Listbox Grenze/Rahmenbreite zu erhöhen?Wie die Grenze/Rahmenbreite für ListBox in Win32

Ich möchte Listbox ähnlich wie unten angegeben bekommen. Listbox Image

ich unten bin mit listbox

CRect p(7, 35, 300, 200); 

DWORD m_ListStyle =WS_CHILD|WS_VISIBLE|LBS_NOTIFY|WS_VSCROLL|WS_HSCROLL|WS_BORDER; 

m_ListStyle ^= LBS_SORT; 

m_ctrlListBox.Create(m_ListStyle , p, this,IDC_LIST); 

m_ctrlListBox.SetFont(GetParent()->GetFont()); 
+0

Was Sie dort sehen, ist höchstwahrscheinlich ein Listenfeld mit einem Standardrahmen, der ein oberstes übergeordnetes Fenster ohne den 'WS_CAPTION'-Stil hat. Der "erweiterte" Rahmen kommt von diesem übergeordneten Fenster. – zett42

Antwort

0

erstellen Wenn Sie tatsächlich die Grenze Größe erhöhen möchten und nicht nur die Gesamtsteuergröße (die jede Fensterfläche nicht besetzt gesetzt wird, wo die Standardsteuerung am Rand) müssen Sie das Steuerelement ableiten und DwmExtendFrameIntoClientArea aufrufen, Sie müssen auch diesen Grenzbereich (als Antwort auf WM_NCPAINT) zeichnen und alle Mausklicks in diesem Bereich bearbeiten (WM_NCHITTEST und möglicherweise andere Aktionen, an die ich nicht denke

+0

'DwmExtendFrameIntoClientArea' ist für oberste Fenster, nicht für untergeordnete Fenster. Für untergeordnete Fenster sollte 'WM_NCCALCSIZE' behandelt werden. – zett42