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;
}
}