🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1248

Re: visual c++ und Fenstergroesse

#1248
From: Robert Seidner
Date: Fri, 12 Jan 1996 21:27
79 lines
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!news
References: <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)