Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Auch anfänger (visual c++)

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
12.04.2003, 09:59 Uhr
~Stefan
Gast


Hallo Forum,

mein Problem,
ich würde gerne eine Klasse Dialog entwerfen, der ich z.B. ein CButton und ein CEdit hinzufüge. Allerdings will ich nicht über den Dialoassistenten gehen, sonder dies von hand machen.

Mein Ziel ist es irgendwann einmal in abhängigkeit von z.b. Benutzereingaben mal 2 oder 3 ... CEdit Felder dynamisch dem Dialog hinzufügen. Wenn ich das über den Assistenten mache dann muß ich (wenn ich das richtig verstehe) die Anwendung jedes mal neu kompilieren (ich wüßte nicht wie ich die datei meineAnwendung.rc dynamisch gestalten kann). Vieleicht hat da jemand von euch so eine ganz billige Klasse zur Anschauung für mich.

Vielen Dank im Voraus

Stefan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.04.2003, 14:01 Uhr
Lord Hessia



Da ich keine ganz billigen Klassen habe, habe ich mal ein Beispiel zusammengestellt, ich hoffe es ist verständlich, da ich einiges zusätzlich reingepackt habe, wenn Du statt dessen lieber nur wissen willst, wie man drei Editfelder anzeigt und mehr nicht, dann kann ich das Ganze ja noch mal etwas kürzen, aber ich denke, man sollte immer bereit sein, etwas zu lernen :-)


C++:
// Hier wird erstmal eine Schriftart erzeugt, damit der Text in Deiner Box nicht aussieht wie er gerade lustig ist
CString m_sfontname ="Arial";
CFont m_font;
m_font.CreateFont(14, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, m_sfontname);

// Das ist die ID für das Editfeld, du solltest einen Wert verwenden, der auf jeden Fall noch von keinem anderen Steuerelement verwendet wird (z.B. 200-999), wobei nach oben etwas Platz
// sein sollte, da Du ja mehrere Editfelder anlegen willst und jedes eine eigene ID benötigt. Inkrementierung erfolgt in ped->Create(...)
unsigned int m_uiAktuelle_CEdit_ID=400;

CEdit* ped = new CEdit;
CStatic* pStatic = new CStatic;

// Kleines Beispiel, wie Du die Koordinaten des Feldes berechnen kannst, beispielsweise wenn Du vorher nicht weißt, ob Du 3 oder 30 Felder anzeigen willst.
// k,m_lBREITE,m_lXSTART, m_lHOEHE, m_lYSTART und l wurden weiter oben erzeugt und mit Werten belegt.
LONG x1,y1,x2,y2;
x1 = k*m_lBREITE+m_lXSTART+k*1;
y1 = l*m_lHOEHE+m_lYSTART+l*1;
x2 = x1+m_lBREITE;
y2 = y1+m_lHOEHE;
RECT r = {x1,y1,x2,y2};


//So legst Du nun zehn Editfelder an:
for (unsigned int i=0, i<10, ++i)
{
  ped->Create(WS_CHILD|WS_VISIBLE|WS_THICKFRAME|ES_READONLY|ES_AUTOHSCROLL, r, this, m_uiAktuelle_CEdit_ID+i);
  pStatic = GetDlgItem(m_uiAktuelle_CEdit_ID);  //Hole Zeiger auf das aktuell erzeugte Editfeld
  pStatic->SetWindowText("Hallo"); // Setze Text des Editfeldes auf: Hallo
  pStatic->SetFont(&m_font); // Setze Schriftart des Editfeldes auf die oben erzeugte
}


Das erzeugte Editfeld ist nur fürs Anzeigen von Text gedacht, nimmt jedoch keine Eingabe entgegen, dazu müsstest Du ES_READONLY weglassen.
Anstatt RECT r oben erst anzulegen und dann in ped->Create(...) zu verwenden, kannst Du auch direkt in ped->Create(...,Rect(x1,y1,x2,y2),...) schreiben, wobei hier Rect dann nicht komplett großgeschrieben wird, da es sich um eine Funktion handelt und nicht um einen Datentyp. Allerdings solltest Du die Koordinaten bereits vorher berechnen, da es bei einer Schreibweise wie
Rect(a+b*e-5,f*4,g-3*h,5*8-r) sehr unübersichtlich wird :-)

Gruß Flo
--
_____________________________________

Brandy Alexander: 3cl Creme de Cacao, 3cl Cognac, 6cl Sahne im Shaker, nur perfekt mit einer Prise Muskatnuss

Prost!!!

Dieser Post wurde am 12.04.2003 um 14:08 Uhr von Lord Hessia editiert.
 
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: