Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Buttons bei On_wm_size() verschieben

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 < [ 2 ]
000
20.08.2003, 10:52 Uhr
~mutu
Gast


hallo!

ich habe 6 buttons auf einem dialog.
wenn man den dialog in der größe verändern will, sollen diese buttons mitgezogen werden. die größe kann bleiben!
d.h. bei z.b. vergrößerung des dialoges durch ziehen der rechten unteren ecke sollen die buttons um delta x und delta y ebenfalls verschoben werden.
mein ansatz:
//Koord. des Buttons holen mit
GetDlgItem(BUTTON1)->GetWindowRect(koord1);
GetDlgItem(BUTTON2)->GetWindowRect(koord2);
GetDlgItem(BUTTON3)->GetWindowRect(koord3);
GetDlgItem(BUTTON4)->GetWindowRect(koord4);
GetDlgItem(BUTTON5)->GetWindowRect(koord5);
GetDlgItem(BUTTON6)->GetWindowRect(koord6);

//verschiebung bei ON_WM_SIZE():
GetDlgItem(BUTTON1)->SetWindowPos(NULL, (koord1.left,koord1.top,koord1.Width(),koord1.Height());
GetDlgItem(BUTTON2)->SetWindowPos(NULL, (koord2.left,koord2.top,koord2.Width(),koord2.Height());
GetDlgItem(BUTTON3)->SetWindowPos(NULL, (koord3.left,koord3.top,koord3.Width(),koord3.Height());
GetDlgItem(BUTTON4)->SetWindowPos(NULL, (koord4.left,koord4.top,koord4.Width(),koord4.Height());
GetDlgItem(BUTTON5)->SetWindowPos(NULL, (koord5.left,koord5.top,koord5.Width(),koord5.Height());
GetDlgItem(BUTTON6)->SetWindowPos(NULL, (koord6.left,koord6.top,koord6.Width(),koord6.Height());

irgendwie klappt's mit der verschiebung nicht so. die buttons müssen ja um den wert der vergrößerung des dialoges verschoben werden???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.08.2003, 12:35 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du fügst ja auch nix zu den aktuellen koordinaten hinzu...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.08.2003, 13:00 Uhr
~mutu
Gast


o.k. so müßtes gehen:

GetDlgItem(BUTTON1)->SetWindowPos(NULL, (koord1.left,koord1.top,koord1.Width() + dlg.Width()-olddlg.Width(),koord1.Height() + dlg.Height()-olddlg.Height());

etc.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.08.2003, 13:39 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


jo genau z.b
du ziehst die im moment in die höhe und breite, warum verschiebst du sie nicht einfach?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.08.2003, 18:17 Uhr
0xdeadbeef
Gott
(Operator)


Schau dir das hier mal an: www.codeproject.com/dialog/easysize.asp?target=easysize

Das dürfte das sein, was du suchst.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.08.2003, 12:44 Uhr
~mutu
Gast


danke , diese informationen über resizing von ganzen dialogen sind erschöpfend
habe das auch schon hinter mir. das schwierige bei verschiebung/größenänderung mehrerer controls ist die individuelle einstellung jedes einzelnen controls.
d.h. man muß genau wissen, welche insgesamt verschoben werden sollen, welche ihren ursprung (x/y linke obere Ecke) behalten sollen, welche controls zu welchem ihren gleichen abstand behalten sollen, welche in ihrer größe verändert werden sollen etc.
das ist eine mühselige arbeit.

schön währe ja ein tool "X-Size" (vc++ add-in?), daß einem die gröbste arbeit abnimmt:
1.man kreiere im resourceneditor einen dialog mit allen nötigen controls (editfelder, listb.,combobox, buttons, listcontrols etc.) in einer "ursprungsgöße" z.b. 640x380
2.man klickt auf einen sogenannten capture-button zum aufzeichnen.
Erst wird "nachgesehen" welche Controls/Id's auf dem Dialog vorhanden sind.
3. den dialograhmen zieht man ein wenig auf (nur um platz zu schaffen)
4. man zieht alle controls, die in ihrer größe oder/und position bei command WM_ON_SIZE verändert werden sollen zurecht und X-Size merkt sich das!-->Es weiß also , welche Controls in ihrer Größe verändert wurden, welche mit der linken, oberen ecke "hängen bleiben sollen", welche abstände zw. den controls eingehalten werden sollen etc.
5. X-Size generiert daraus den zu implementierenden Code (die Angaben in SetWindowPos für WM_ON_SIZE würden ja schon reichen

-->anhand der absoluten/inkrementalen werte beim ziehen im entwurfstadium müßte das tool wissen, wieviel die controls bei unterschiedlicher größenänderung des gesamten dialoges (ziehen des rahmens) in ihrer größe/lage zu ändern sind.fertig, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.08.2003, 13:25 Uhr
~Tom
Gast


Entschuldige die Einmischung, aber du hast Recht, das wäre nen schickes Prog schreib es doch mal und poste es.
So eine art makroaufzeichnung. Vieleicht gibs die ja auch schon.

THX
TOM
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.08.2003, 13:47 Uhr
~mutu
Gast


hi!
dazu fehlt mir das nötige know how.
"fantasieren ist nicht schwer.."
gibt's da etwa zweifel, ob's machbar ist?
wenn's schon (evt.) gibt: idee, wie danach suchen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.08.2003, 15:05 Uhr
Tommix



Hallo,
schau mal auf dieser Seite unter der Überschrift "Resizable Dialogs".

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.08.2003, 15:28 Uhr
~mutu
Gast


..ohne auf diese seite zu schauen.. es sind bestimmt wieder anleitungen, in denen alle controls per hand gecoded werden müssen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: