Größe von Dialogelementen mit Dialoggröße ändern

Coalminer

Mitglied
Hallo,

wenn ich einen Dialog habe der mit der Maus zur Laufzeit in der Größe veändet werden kann..

Wie schaff ich es, dass bestimmte Dialogelement ihre Größe mitverändern ?
Dabei sollte der Dialog natürlich nich flackern.
 
Du mußt in der OnSize oder in der OnSizing Methode die aktuelle Größe des Dialoges ermitteln und dementsprechend mit SetWindowPos jedes einzelne Dialogelement plazieren und in der Größe ändern.
 
Fuege zwei BOOL-Variablen (z.B. bBtnVerschoben, bDlgVerschoben) mit Status „public“ in die Dialog-Klasse
Du musst dann nur die Breite oder Höhe des Dialogs oder Steuerelement in der MoveWindow()-Funktion verändern.
Füge folgenden Code in die OnInitDialog() Funktion ein, um die eben erstellten Variablen zu initialisieren:
BOOL CMoveWindowDlg::OnInitDialog()
{

bBtnVerschoben = FALSE;
bDlgVerschoben = FALSE;
return TRUE;
}


Hier ein kleiner Beispiel-Code:

void CMoveWindowDlg::OnButton ()
{
// Maße des Dialogs ermitteln
CRect CDlgRect;
GetWindowRect(&CDlgRect);

// Dialog verschieben
if(bDlgVerschoben == FALSE)
{
// Dialog an neue Position verschieben
MoveWindow(CDlgRect.left-50 , CDlgRect.top -50, CDlgRect.Width() +50, CDlgRect.Height() +50, TRUE);
bDlgVerschoben = TRUE;
}
else
{
// Dialog wieder in Ausgangsposition setzen
MoveWindow(CDlgRect.left+50, CDlgRect.top+50, CDlgRect.Width() -50, CDlgRect.Height() -50, TRUE);
bDlgVerschoben = FALSE;
}
}





void CMoveWindowDlg::OnButton ()
{
// CRect Variable wird für die Maße des Buttons benötigt
CRect CBtnRect;

// Zeiger auf Button erstellen und den Button2 zuweisen
CButton *pButton = (CButton*)GetDlgItem(IDC_BUTTON);

// Maße des Buttons ermitteln
pButton->GetWindowRect(CBtnRect);

// Ermittelte Koordinaten bzw Maße umwandeln
ScreenToClient(&CBtnRect);

// Höhe und Breite sowie die Position des Buttons in int übertragen
int nButtonBreite = CBtnRect.Width();
int nButtonHoehe = CBtnRect.Height();
int nButtonPosLinks = CBtnRect.left;
int nButtonPosOben = CBtnRect.top;

if(bBtnVerschoben == FALSE)
{
// Button an neue Position verschieben
pButton->MoveWindow(nButtonPosLinks +20, nButtonPosOben +20, nButtonBreite +20, nButtonHoehe +20, TRUE);
bBtnVerschoben = TRUE;
}
else
{
// Button wieder in Ausgangsposition setzen
pButton->MoveWindow(nButtonPosLinks -20, nButtonPosOben -20, nButtonBreite -20, nButtonHoehe -20, TRUE);
bBtnVerschoben = FALSE;
}
}
 
Zurück