Šta je novo?

Pomoc oko Visual C++6

rocky

Čuven
Učlanjen(a)
25.07.2003
Poruke
39
Poena
604
Problem je sledeci:
U jednom trenutku izvrsavanja programa potrebno mi je da se pojavi dijalog na kome ce samo biti ispisan tekst koji se nalazi u Edit kontroli glavnog dijaloga cija je promjenjiva tipa Cstring. Na koji nacin da prenesem tekst iz te promjenjive na dijalog koji treba da se pojavi, pri cemu taj tekst mora da ima istu formu kao i kod Static Text kontrole. Hvala.
 
U drugi dijalog ubaci jedan CString i pre nego što pozoveš DoModal(), upišeš u njega tekst koji treba da se ispiše. Posle možeš sa njim da radiš šta hoćeš: da ga ispišeš u OnDraw(), da napraviš static text, read-only edit box,...
 
Tako nesto sam i uradio. U kodu koji kreira dijalog koji treba da ima taj string imam liniju "broj=m_broj" pri cemu je m_broj string koji je promjenjiva Edit kontrole glavnog dijaloga. Medjutim kada prevodim program prijavljuje mi gresku "undeclared identifier" za m_broj iako je to public promenljiva za glavni dijalog. Ima li resenja?
 
Prvo u Resource View napraviš novi dijalog. Onda klikneš desnim dugmetom na dijalog, pa Add Class. Napišeš kako se zove klasa (recimo CDialog2) i da je izvedena iz CDialog. U CDialog2 ubaciš jedan public CString. Onda odeš u Class View, klikneš desnim dugmetom na CDialog2, izabereš Properties. U properties prozoru izabereš spisak virtuelnih funkcija (mali zeleni kvadar). Preklopiš funkciju OnInitDialog. Tu ubaciš:

Kod:
    Edit2.SetWindowText(str);

Recimo da je Edit2 CEdit u kome ispisuješ text, a str CString koji treba da se ispiše. Naravno pre toga ubaciš CEdit u ovaj dijalog i ubaciš control promenljivu Edit2. Naravno ne moraš da koristiš CEdit - možeš da staviš i CStatic ili nešto drugo.


I onda tamo gde želiš da prikažeš taj dijalog:

Kod:
 CDialog2 *dlg2=new CDialog2(this);   //ako je this pokazivač na parrent prozor

 Edit1.GetWindowText(dlg2->str);  //Edit1 je CEdit iz koga čitaš text

 dlg2->DoModal();

 delete dlg2;



Izvini što je malo konfuzno... :D Pitaj ako ti nešto i dalje nije jasno.
 
rocky je napisao(la):
Medjutim kada prevodim program prijavljuje mi gresku "undeclared identifier" za m_broj iako je to public promenljiva za glavni dijalog. Ima li resenja?

Jesi ubacio na početku
Kod:
 #include "Dialog#.h"
Umesto "Dialog#.h" treba da stoji ime header fajla glavnog dijaloga.
 
Mislim da sam uradio sve sto treba sa header fajlovima. Probacu ovo predlozeno resenje. Hvala na objasnjenju.
 
rocky je napisao(la):
Mislim da sam uradio sve sto treba sa header fajlovima. Probacu ovo predlozeno resenje. Hvala na objasnjenju.


Izvini... ja sam tek sada pažljivo pročitao šta si napisao.

rocky je napisao(la):
U kodu koji kreira dijalog koji treba da ima taj string imam liniju "broj=m_broj" pri cemu je m_broj string koji je promjenjiva Edit kontrole glavnog dijaloga.

Prvo, ne može da se napiše broj=m_broj;... Ako ti je broj CString koji se nalazi u drugom dijalogu, a m_broj CString CEdit-a koji se nalazi u glavnom dijalogu, ne možeš da im pristupaš tako. Ako se nalaziš u nekoj funkciji članici glavnog dijaloga onda promenjlivoj broj pristupaš dialog2.broj ili dialog2->broj (imesto dialog2 staviš ime ime objekta drugog dijaloga). Ako si u nekoj funkciji koja je članica drugog dijaloga isto tako ne možeš da pristupiš promenljivoj m_broj pošto nije članica tog objekta. Treba ti pokazivač na parrent prozor (glavni dijalog), dobijaš ga sa GetParrent(), pa onda preko njega pristupaš: parrent->m_broj (naravno ako je m_broj public).

Druga stvar: Gde si ti stavio ovu liniju? Ako pod kodom koji kreira dijalog misliš na konstruktor dijaloga - tu ne možeš da napišeš ovako nešto. Sve inicijalizacije unutar dijaloga stavljaš u OnInitDialog().

edit: Ja bih ti preporučio da prvo malo utvrdiš osnove objektno orijentisanog programiranja... nabavi knjigu "Objektno orijentisano programiranjena jeziku C++" od Dragana Milićeva - ima je u Mikroknjizi. Ili skini sa neta "Thinking in C++" (ne znam ko je autor).
 
Poslednja izmena:
Istina je da sam tek poceo da radim sa ovim stvarima pa su mi dobrodosle informacije iz svih mogucih izvora. U svakom slucaju zahvaljujem na iscrpnim objasnjenjima.
 
rocky je napisao(la):
Istina je da sam tek poceo da radim sa ovim stvarima pa su mi dobrodosle informacije iz svih mogucih izvora. U svakom slucaju zahvaljujem na iscrpnim objasnjenjima.

U tom slučaju pravac Mikroknjiga i kupi "Objektno orijentisano programiranje na jeziku C++". Knjiga je odlična, a košta oko 800 dinara. "Thinking in C++" možeš da skineš (besplatno i legalno :) ) sa: http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
 
Izvini.Opet ja.Nisam mogao uraditi onako kako si mi rekao jer nikako ne mogu da dodelim promenljivu CStatic kontroli a treba mi ispisivanje teksta u tom obliku. Moze li nesto ovako:
Kao funkciju clanicu CDialog2 klase imam funkciju Create sa sledecim kodom:
BOOL CDialog2::Create()
{

CDialog::Create(IDD, m_pMainWindow);
ShowWindow(SW_SHOW);
return TRUE;
}
m_pMainWindow mi je CWnd* i takodje public clan ovog dijaloga.U konstruktoru mu dodeljujem vrednost pokazivaca na glavni dijalog.Takodje imam public promenljivu CString str ovog drugog dijaloga.Na mestu gde hocu da mi se pojavi ovaj dijalog imam kod:
m_mdlg=new CDialog2(this);//ovo je pomocni dijalog
m_mdlg->str=m_brojtel;
m_mdlg->Create();

m_mdlg je CDialog2* clanica promenljiva glavnog dijaloga.m_brojtel je CString promenljiva dodeljena Edit kontroli glavnog dijaloga.Kod se nalazi u funkciji clanici glavnog dijaloga.Program se dobro prevede i drugi dijalog se pojavljuje tamo gde treba, dakle samo mi je potrebno ispisivanje stringa iz m_brojtel na drugom dijalogu u vidu static teksta. Moze li se nesto na ovo dodati da se to obavi?
 
rocky je napisao(la):
Izvini.Opet ja.Nisam mogao uraditi onako kako si mi rekao jer nikako ne mogu da dodelim promenljivu CStatic

Moraš da joj promeniš ID iz IDC_STATIC u nešto drugo (recimo IDC_STATIC1). Onda možeš da joj dodeliš promenljivu.
 
Resio sam problem.Jos jednom hvala na strpljenju. Uzgred, vec imam knjigu od Miliceva,samo sto je to " OOP Skripta sa praktikumom".
 
rocky je napisao(la):
Resio sam problem.Jos jednom hvala na strpljenju. Uzgred, vec imam knjigu od Miliceva,samo sto je to " OOP Skripta sa praktikumom".

Nisam video tu knjigu sa praktikumom, ali valjda je ista...
 
To je, u stvari, knjiga koja ide uz ovu glavnu "Objektno orjentisano programiranje na jeziku C++" i predstavlja izbor i sazetak materijala iz te knjige i ima dosta primera.
 
Vrh Dno