Cum să obțineți de la o formă la alta

Cum să obțineți de la o formă la alta

aici este problema cu trecerea la c ++
În formele Delphi sunt aproape întotdeauna existente, adică. ele există, poate că ele nu sunt vizibile, dar există.
dar cu ++ nu este. Formularul nu există până când nu îl creați

astfel încât dacă forma 3 există,
(este deschis, pentru că vă deplasați de la Delphi această frază nu sună lipsită de ambiguitate)
și anume a fost creat de clasă formă de obiect (derivat dintr-un CDialog, de obicei, în cod, se pare ca S. DLG dlg - formează apoi există obiect dar nu este otobrazhaetya), sau pentru a crea un pointer la un obiect Klas (S. DLG * dlg) și inițializat (dlg = nou C. Dlg), formularul trei are o variabilă care oferă acces la acest formular
și judecând de la ceea ce ați spus, această variabilă ar trebui declarată în clasa principală de formular.
același lucru despre form2

cum afișezi formulare, pentru informații

1 DoModal - caracteristica acestei metode este transferul complet al formei de control
2 create și showwindow - forma funcționează în paralel cu orice altceva.

în orice caz, pentru sarcina dvs., trebuie să creați două obiecte cu alte două forme din clasa principală de formular. astfel forma de bază va avea acces la restul

iar din formele 2 și 3 puteți obține un pointer la fereastra de bază
adu tipul în clasa principală a formelor
și folosind obiectul dat, de asemenea, vă place în Delphi, puteți conduce monopulările cu formele pe care le doriți? Întrebarea este dacă veți vedea schimbarea sau nu. totul depinde de modul în care ați deschis formularele.

Vă sfătuiesc să găsiți literatura de specialitate pe casetele de dialog modale și non-modale și apoi să sortați clasa CWnd și funcțiile acesteia


V-aș da un pic sub codul și ușor podkinul, dar studioul nu este la îndemână

vizitați www.firststeps.ru

Cum să obțineți de la o formă la alta

asta e problema.
În Delphi, ferestrele nu există întotdeauna, sunt în setări
proiect, puteți specifica care fereastră să existe
și ce să creați în timpul programului. Eu de obicei am
Dintre cele 20 de ferestre din aplicație, ferestrele 3,
restul au fost create în timp ce programul se desfășura. acest lucru este de obicei
începătorii lucrează cu ferestre existente în mod constant. dar
Interesant un altul, să spunem că trebuie să creez un text
fereastră, nu unul, dar 5 sau 10 nu este important, clasa la ferestre este una,
când creez, pot instala fiecare dintre ferestre
identificatorul, să spunem contorul numerelor ferestrelor. atunci dacă de la unii
aplicație Windows (de la o altă clasă fereastră), am nevoie
se va referi la unul din aceste ferestre, deja cunosc clasa
fereastra și identificatorul acesteia. Și căutare simplă prin deschide
ferestre, comparând clasa și ID-ul, aș putea obține
până la indicatorul ferestrei, ceea ce am nevoie. în același mod pe care l-aș putea obține
la orice obiect aparținând unei forme cunoscute.
Este interesant cum se face acest lucru în C ++.

în Delphi și C ++, de fapt, foarte asemănătoare.
O sintaxă puțin diferită, dar regulile pentru construirea clasei
sunt absolut identice. Nu vorbesc despre vizuale
Cochilie, în cazul în care întreaga problemă este de a plasa, componente.
Am lucrat foarte mult cu componentele de exemplu. le-a creat.


și când se creează componente, nu există coajă vizuală,
toate trebuiau create în cod. Foarte similar cu VC ++.

Aici cred, de asemenea, ca în C + + ar trebui să existe o căutare după clase.
și anume Dacă obiectul există, este creat, atunci poate fi
găsi. întâi găsiți părintele său, și apoi lui.

Cum se poate face acest lucru? asta e întrebarea!
dar există o astfel de oportunitate, sunt sigur de asta.
nu neapărat, deoarece în Delphi, rezultatul principal.
În Delphi există o serie de indicatori pentru toți cei existenți
Formularele, elementele sale sunt completate și șterse
mașină, ceva similar se poate face de unul singur
în C ++? și că această matrice era disponibilă pentru clasele de ferestre.
Ce zici tu?

Cum să obțineți de la o formă la alta

și anume Dacă obiectul există, este creat, atunci poate fi

găsi. întâi găsiți părintele său, și apoi lui.

La tine fereastra principală este admisă clasa C1
clasa a doua C2
al treilea C3

blestemă trebuie să fie așa


în ajutorul clasei C1
publice:
C2 d1; // d1-obiect
C3 d2;

care ar ajunge din clasa C2
în clasa C3 pe mesajul de a apăsa o tastă

În funcția de procesare a mesajelor (clasa c2), trebuie să efectuați următoarele

mai multe informații
GetParent () - returnează un pointer la fereastra de bază, dar cu verneet de tip CWnd, iar acest tip nu conține variabile, cum ar fi și d2 d1
(C1 *) - Fantomele CWnd pointer la un pointer la C1 acum avem un pointer la clasa care conține și d2 d1
-> d2 - alegeți un obiect din clasa C1. altă fereastră
.SetWindowText ("dafhg"); și aplicați funcția de setare a capacului ferestrei. în consecință, când faceți clic pe o singură fereastră, numele celorlalte modificări.

Poate că sunt rău la degenerarea gândurilor bine, în general, decât subiectele bagate și sunt fericit

Articole similare