Article View: de.comp.lang.c++
Article #1248Re: visual c++ und Fenstergroesse
From: Robert Seidner
Date: Fri, 12 Jan 1996 21:27
Date: Fri, 12 Jan 1996 21:27
79 lines
3182 bytes
3182 bytes
Hans-Dirk Flaechsig wrote:
>
> Hi!
>
> ich habe ein (hoffentlich) kleines Problem bei Visual C++. Ich moechte einen FormView verwenden, der nur
> eine Listbox oder aehnliches enthaelt. Beim veraendern der Fenstergroesse sollte dieser sich dann anpassen.
> Fuer den Anfang wuerde es mir reichen, wenn ich die Listbox an den Fensterrahmen 'anheften' kann. Was
> sonst noch interessant waere ist die Beschreibung ueber eine relative Position (also 30% vom linken Rand oder
> so aehnlich.
Die folgende Loesung geht von einem normalen View aus. Sie kann
aber auch an einen Form-View angepasst werden.
Die View-Klasse besitzt eine Membervariable vom Typ CListBox*, also
einen Zeiger auf eine Instanz der Listbox-Klasse.
Die Listbox wird als Kindfenster des Views angelegt, weshalb zwei
Methoden wichtig sind:
OnCreate
und
OnSize.
In der Funktion OnCreate wird die Listbox erzeugt.
int CProgView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
// Berechnet die Groesse der Listbox, aus der Groesse des Views.
RECT r;
::SetRect(&r, lpCreateStruct->x, lpCreateStruct->y,
lpCreateStruct->cx, lpCreateStruct->cy);
// Fordert Speicher fuer die Listbox an.
m_listBox = new CListenBox();
ASSERT (m_listBox != NULL);
// Erzeugt eine Listbox.
// Die Bedeutung der Attribute WS_CHILD | WS_VISIBLE | WS_VSCROLL |
// WS_HSCROLL | LBS_NOTIFY | LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL |
// LBS_DISABLENOSCROLL kann man in der Hilfedatei von AppStudio nachschlagen.
// r gibt die Groesse der Listbox an
// this bezeichnet das Objekt, zu dem die Listbox gehoert, also der View
// IDC_LISTVIEW ist die ID der Listbox
m_listBox->Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL |
WS_HSCROLL | LBS_NOTIFY |
LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL |
LBS_DISABLENOSCROLL, r, this, IDC_LISTVIEW);
return 0;
}
Das Anpassen der Listbox-Groesse an die Rahmengroesse geschieht
in folgender Funktion:
void CProgView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
if (m_listBox != NULL)
m_listBox->MoveWindow(0, 0, cx, cy);
}
Quelle:
Visual C++
ADVANCED PROGRAMMING
Ralf Morgenstern
Mathias Oberdorfer
ADDISON-WESLEY
ISBN 3-89319-760-5
Seite: 117 ff
Gruss
Robert
r.seidner@wzl-ps1.wzl.rwth-aachen.de
Technical Details
Message-ID:
<30F6D24C.60B@wzl-ps1.wzl.rwth-aachen.de>Path:
arc1-ca.pugleaf.net!news.rwth-aachen.de!newsReferences:
<4d2uik$5g0@news.uni-paderborn.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.rwth-aachen.de!news From: Robert Seidner <r.seidner@wzl-ps1.wzl.rwth-aachen.de> Newsgroups: de.comp.lang.c++ Subject: Re: visual c++ und Fenstergroesse Date: Fri, 12 Jan 1996 13:27:40 -0800 Organization: RWTH -Aachen / Rechnerbetrieb Informatik Message-ID: <30F6D24C.60B@wzl-ps1.wzl.rwth-aachen.de> References: <4d2uik$5g0@news.uni-paderborn.de> NNTP-Posting-Host: 137.226.202.253 Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.0b4a (Win16; I)