Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Controls bei Änderung Dialoggröße auto. anordnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.07.2003, 10:15 Uhr
~mutu
Gast


Hallo!

Ein Dialog mit relativ vielen Controls (Editfelder, ListBoxes, Buttons, Statics) soll (z.B.) per SizeGripper in der Funktion OnSize() in seiner Größe verändert werden können.
Gibt es eine Funktion, die einem die Arbeit abnimmt, bei jedem Dialog, der eben viele Controls enthält, immer mühselig mit SetWindowPos() die Position jedes Controls anzupassen? Es sollen schließlich alle controls proportional "mitgezogen" werden, wenn die Größe des Dialoges sich ändert.
Vielleicht eine Funktion, die alle Controls bei OnSize() in einer Schleife "durchläuft" und per SetWindowPos() das gerade gefundene Control um die geänderte Größe left, top, width, height verschieben, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.07.2003, 13:06 Uhr
~mutu
Gast


dabei müßte noch nicht einmal die auflösung etc. angepaßt werden. es reichen die anpassungen der position und größe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.07.2003, 13:34 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
da gibt es nichts fertiges, wie beim CBuilder oder Delphi über ComponentCount. Da hilft nur: alte Position retten und mit ON_COMMAND_RANGE versuchen etwas zu löten.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.07.2003, 16:01 Uhr
~mutu
Gast


..heißt also, erst alle Control-Id's eines Dialoges aus der Resource erfassen (wie?) , deren Position/Größe per Funktion ON_COMMAND_RANGE(ID1, IDn, GetInfo) nacheinander ermitteln.

(-->wie weiß man dann, welchen name man bei ID1 angibt, wenn es verschiedene Dialoge gibt?)

void CMyClass::GetInfo(UINT nID)
{
CRect rectOfID1,
rectOfID2;

while(...)
{
GetDlgItem(ID1)->GetWindowRect(rectOfID1);
GetDlgItem(ID1 +1)->GetWindowRect(rectOfID2); //?
}

}

und bei OnSize() mit ON_COMMAND_RANGE(ID1, IDn, SetSize)
dann:

void CMyClass::SetSize(UINT nID)
{
while(...)
{
GetDlgItem(ID1)->SetWindowPos(NULL, rectOfID1.left + cx,
rectOfID1.top + cy .............);
}

} ???



Beispiel für einen Dialog z.b. mit ein paar Eingabefeldern, Buttons?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.07.2003, 17:55 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
das bring ich heute nicht mehr zeitlich zusammen (bin in Urlaubsvorbereitungen).
www.codeguru.com/dialog/index.shtml
"Resizable Dialogs" da ist einiges dabei und dürfte Dir helfen.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 25.07.2003 um 17:56 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.07.2003, 11:08 Uhr
~mutu
Gast


funzt! danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: