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. |