Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Alle Id durchlaufen

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
08.09.2003, 17:29 Uhr
~res
Gast


Hallo!

Wie durchläuft man alle ID's eines Dialoges, um am Ende dessen Position und Größe (und dessen Control-Elemente wie Eingabefelder Buttons etc.) in der Registry zu speichern?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.09.2003, 18:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


mit einer schleife?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.09.2003, 22:01 Uhr
mike
Pinguinhüpfer
(Operator)


oder mit einer Callback (EnumWindow) Funktion. Mit GetWindowPlacement kannst du die Pos speichern

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.09.2003, 09:59 Uhr
~res
Gast


hallo!

FloSoft: ja mit einer Schleife muß das wohl gemacht werden..oder wie soll man sonst alle controls durchgehen können?

mike: Ein Beispiel zu GetWindowPlacement habe ich nur unter www.codeproject.com/dialog/windowplacement.asp?target=getwindowplacement#xx377599xx gefunden. Da wird allerdings nur das Fenster an sich(?) in seiner Pos. gespeichert. Ich benötige allerdings auch alle controls darauf.

Verändert man einen dialog in seiner größe will man evt. genau diese darstellung das nächste mal bei start desprogramms wieder haben.
schön währe es, dieses gleich in die easysize.h (http://www.codeproject.com/dialog/easysize.asp?target=easysize)einzubinden, wo man diaoge in ihrer größe ändern kann.-->und das eben gleich speichert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.09.2003, 11:46 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Meinst du sowas? (das Bsp bezieht sich auf einen Dialog mit einem Edit und einer CEdit Control Membervariable)

C++:
CString str;
WINDOWPLACEMENT d;
m_c.GetWindowPlacement(&d); //Control meber auf ein Edit in einem Dialog
str.Format("Alte Pos: %d  %d  %d  %d", d.rcNormalPosition.left,
   d.rcNormalPosition.top, d.rcNormalPosition.right,
   d.rcNormalPosition.bottom);
AfxMessageBox(str);
m_c.MoveWindow(10,10,100,100);  
m_c.GetWindowPlacement(&d);
str.Format("Neue Pos: %d  %d  %d  %d", d.rcNormalPosition.left,
   d.rcNormalPosition.top, d.rcNormalPosition.right,
   d.rcNormalPosition.bottom);
AfxMessageBox(str);



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.09.2003, 14:14 Uhr
~res
Gast


exakt, aber jetzt sollen die positionen ALLER Controls (deren ID ich nicht kenne) erfaßt werden.
hat man z.b. 5 verschiedene Dilaoge, so möchte man nicht bei jedem dieser 5 dessen Controls einzeln als Member deklarieren, sondern diese Funktion zu erfassung/speicherung der neuen pos. in einer zentralen Klasse einbinden.
so kann man in zukunft so eine funktion wie etwa "SaveNewPosition()" bei Mausklick auf OK-Button aufrufen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.09.2003, 14:39 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!

C++:
BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam);
/////////////////////////////////////
void CTestDlg::OnSave()
{
  HWND hWnd = GetSafeHwnd();
  EnumChildWindows(hWnd, &EnumChildProc, 0);
}

BOOL CALLBACK EnumChildProc(HWND hWnd, LPARAM lParam)
{
CWnd* pWnd = (CWnd*)CWnd::FromHandle(hWnd);
CString str;
WINDOWPLACEMENT d;
pWnd->GetWindowPlacement(&d);
str.Format("Item %i: %d  %d  %d  %d", pWnd->GetDlgCtrlID(),
    d.rcNormalPosition.left,
    d.rcNormalPosition.top, d.rcNormalPosition.right,
    d.rcNormalPosition.bottom);
AfxMessageBox(str);

return TRUE;
}



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.09.2003, 16:36 Uhr
~res
Gast


dank!
aber hier übergibt man wieder ein bestimmtes Contol
hier fehlt sowas wie ein lauf über alle controls, die man zu dieser resource (des dialoges IDD_MYDIALOG) findet.

AnzahlControlsId = CountIdFromResource(IDD_MYDIALOG) //MyDlg.rc

for(int i=0; i < AnzahlControlsId;i++)
{
...
pWnd->GetDlgCtrlID(),
//Lese jetzt alle pos. dieses Controls
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.09.2003, 17:00 Uhr
mike
Pinguinhüpfer
(Operator)



Zitat:

aber hier übergibt man wieder ein bestimmtes Contol


na dann schau noch mal genau hin
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.09.2003, 17:10 Uhr
~res
Gast


oh ja! und ich dachte es ist eine endlosschleife!!
o.k. ich muß es jetzt halt mal in einen dialog reinbauen und testen..
schonmal danke!
 
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: