Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dialog - OnSizing Problem

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.10.2006, 15:40 Uhr
-]Dr.LoLig[-



Moin!
Also ich schreibe zuzeit eine Dialog-Anwendung und will bei dieser die Maximieren-Funktion hinzufügen. Mein Problem ist es nun, dass ich nicht weis wo ich die neuen Elemente hinzeichnen muss, da die Koordinaten die ich jeweils zurückkriege meiner Meinung nach net übereinstimmen(verschiedene Systeme).
Mein Beispiel:
vom Fenster mit GetWindowRect bekomme ich:
top:155, bottom:584, left:145,right:879 nach ClientToScreen top:340, bottom:769, left:294,right:1028

so und nun will ich nen Button in der OnSize neuzeichnen:
mit getclientrect bekomme ich: top:0, bottom:23, left:0,right:75 nach ClientToScreen top:185, bottom:208, left:149,right:224

Ich kann absolut keinen Zusammenhang sehen zwischen den Koordinaten vom Fenster und den von Button(Button ist unten Rechts im Fenster).
Kann mir vielleicht einer sagen wo mein Denkfehler liegt?

Hier mal noch die OnSizing:
void CTabctrlDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
CDialog::OnSizing(fwSide, pRect);

CPoint CtrlRechtsUnten;
CPoint ButtonRechtsUnten;
CRect Zwischen=pRect;

CRect button;
m_bOK.GetClientRect(button);

ClientToScreen(button);
ClientToScreen(Zwischen);

CtrlRechtsUnten.x=(Zwischen.right -25);
CtrlRechtsUnten.y=(Zwischen.bottom -25);
ButtonRechtsUnten.x=(Zwischen.right -23);
ButtonRechtsUnten.y=(Zwischen.bottom -75);
m_tabctrl.MoveWindow(10,10,CtrlRechtsUnten.x,CtrlRechtsUnten.y,true);
m_bOK.MoveWindow(150, 1002,button.Width(),button.Height(),true); //x,y sind frei gewählt, aber genau die brau ich

rein theoretisch müsste er doch auch wenn ich MoveWindow mit den alten Koordinaten füttere :
m_bOK.MoveWindow(button.left, button.top, button.Width(),button.Height(),true);

den Button immer an der Ursprungsposition zeichnen? Er malt mir das Ding aber dann mitten in dialog ...

Bin echt am verzweifeln, weil ich schon allerlei Möglichkeiten durch hab
mfg
Mario

Dieser Post wurde am 23.10.2006 um 15:41 Uhr von -]Dr.LoLig[- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.10.2006, 18:21 Uhr
mmc20
puss in boots


lass das ClientToScreen() weg, dann müsstes klappen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.10.2006, 08:37 Uhr
-]Dr.LoLig[-



Moin!
Danke aba wenn ich die weg lasse hat der Button allein bei top und left 0 stehen und landet oben links inner ecke
beim Bsp.: m_bOK.MoveWindow(button.left, button.top, button.Width(),button.Height(),true);


mfg

Dieser Post wurde am 24.10.2006 um 08:40 Uhr von -]Dr.LoLig[- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.10.2006, 10:54 Uhr
-]Dr.LoLig[-



Hi!
Hab grad nochwad komisches festgestellt.
Wenn ich mir neben den m_bOK Button noch die Koordinaten von nen m_bCa Button hollen will, welcher rechts daneben liegt auf gleicher Höhe. Krieg ich für beide exakt die gleiche Koordinaten von GetClientRect(....).
Wenn ich das Spiel mit 3n mache krieg ich von 3n die gleichen Koordinaten...,
Also für mich geht das ma gar net klar...

Dieser Post wurde am 24.10.2006 um 10:55 Uhr von -]Dr.LoLig[- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.10.2006, 11:34 Uhr
~mmc20
Gast


hol dir das rect mal mit GetWindowRect(..)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.10.2006, 13:48 Uhr
-]Dr.LoLig[-



Hi!
Danke, jetzt bekomm ich von den Buttons verschiedene Koordinaten die untereinander auch Sinn ergeben.
Nur wie krieg ich passende Koordinaten vom gesamten Fenster, so das wenn ich:
m_bOK.MoveWindow(window.left, window.top, button.Width(), button.Height(), true);
//window ist rect struktur vom fenster auf den die buttons sind
ausführe der button au oben links in der Ecke landet?

Also im Endeffekt will ich sowad machen:
//Abstand x von der rechten Kante bis zum linken Punkt vom Button
Abstand_x = window->right - window->left - button->left;
damit ich dann sagen kann z.B:
//pRect Fenster Daten von der OnSizing
m_bOK.MoveWindow(pRect->right - Abstand_x, pRect->bottom + Abstand_y, button.Width(), button.Height(), true);

Oder geht das gar...


mfg

Dieser Post wurde am 24.10.2006 um 13:56 Uhr von -]Dr.LoLig[- editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.10.2006, 15:23 Uhr
mmc20
puss in boots


am besten du holst dir in der onsize noch mal das clientrect deines dlg (oder rechnest pRect entsprechend um ScreenToClient(..)) und arbeitest dann mit OffsetRect(..)

C++:
//...
CRect rect, client;
GetClientRect( &client ); // damit haste schon mal die grösse des dlg (falls du die brauchst)
int xoffset = 40, yoffset = 80;
m_bOK.GetClientRect( &rect );
rect.OffsetRect( xoffset, yoffset); // statt zwei int's, nimmt er auch POINT oder SIZE
m_bOK.MoveWindow( &rect, TRUE );
//... usw

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.10.2006, 16:00 Uhr
-]Dr.LoLig[-



ich denke die OffsetRect(..) ist genau das was i gebraucht hab
danke danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.10.2006, 10:52 Uhr
-]Dr.LoLig[-



Moin!
Hat soweit schonma wunderbar geklappt, thx
aba mal noch ne Frage hab nun auch nen TabCtrl ver größer will aba nun auch die TabPage mit vergrössern, kleinern

nur wie ruf ich den OnSizing dort auf?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.10.2006, 12:13 Uhr
-]Dr.LoLig[-



Erledigt, alles easy
mfg
 
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: