Powiem, że nie do końca rozumiem, zwłaszcza, że w Visualu pliki cpp teoretycznie w ogóle nie są dostępne dla użytkownika. Wszystko wrzuca się do plików h, czyli np. kod w aa.h całego pliku, a w aa.cpp jest tylko include tego nagłówka i nic więcej. Boję się, żeby się to wszystko nie posypało jak zacznę przekładać mu kod tam gdzie on się go nie spodziewa w przypadku pracy na formach. No, ale zrobię backup zobaczymy. I właśnie jeszcze co do gcnew.
Tak jak wspomniałeś, jest to new z automatycznym niszczeniem obiektu po stwierdzeniu bezużyteczności. Jednak mam pytanie, bo zauważyłem coś niepokojącego. Ten program w sumie nie jest duży, wczytuje kilka obrazków, a w pamięci zajmuje ponad 30 MB (oczywiście mówię o RAM-ie). Może bym to zrozumiał, bo wszystko jest jak zawsze uruchamiane pod kontrolą debuggera (on chyba też dorzuca swoje dane), ale z każdą pracą na tym programie on stanowczo nabiera coraz więcej pamięci. Jak to jest z tymi formami ? Czy to na pewno wszystko jest czyszczone po użyciu ? Mam na myśli konkretnie Forma która wykorzystywała np. zmienne x i y, jakieś kontrolki dodane na forme (lub kontrolka na kontrolkę)... czy to wszystko jest wyrzucane po wywołaniu Close() na tej formie ? Bo zaczynam mieć coraz więcej wątpliwości, czy niektórych elementów nie trzeba ręcznie niszczyć. Może to tylko kwestia debuggera, po każdej operacji, czy niszczenie czy tworzenie i tak zbiera informację o działaniu. Jednak tak dokładnie na nim się nie znam, więc pewien być nie mogę.
A teraz jeszcze do tego dojdzie DirectX, bo muszę dodać do formy film (opcja wycięcia klatek), tak więc nowe biblioteki do dorzucenia, nowe zmienne, itp.
No cóż, najpierw spróbuje użyć tego co mi pokazałeś, a potem się zobaczy co dalej...
Jak będzie działać to Ci podziękuje ;p
Ok, zszedłem z ponad 120 błędów do... 1, ale to jeszcze nic nie oznacza, bo ten jeden może tylko je ograniczać (tj. po jego naprawie wyskoczy reszta). Może coś źle zrozumiałem. W tym pliku cpp o którym wspomniałeś mam coś takiego:
//ref class add_new_to_database;
ref class add_new_to_database : public System::Windows::Forms::Form
{
/// tu jest ta cała reszta
}
Problem tkwi w tym, że jak jest taki zapis to da mi błąd, że redefinicja klasy, natomiast jak "odkomentuje" pierwszy fragment i "zakomentuje" (nie wiem jak to powiedzieć ;p Po prostu wyłącze te linijki z kodu) to "error C2447: '{' : missing function header (old-style formal list?)", ale to wynika z klamr, które zostają. Usunięcie ich oczywiście da pokaźna listę błędów.
W pliku .h jest wszsytko to co w cpp bez zdarzeń dla buttonów, itp, bo one wykorzystywały błędne dane, oraz definicja samej klasy czyli z nagłówkiem " public ref class add_new_to_database : public System::Windows::Forms::Form".
Aha, w cpp jest include pliku .h. Jednak podejrzewam, że całość jest w ogóle źle, bo wychodzi na to, że nigdzie nie ma tego "class add_new_to_database", tzn. można dodać i akceptuje, bo dorzucone przed błędem, ale nic z tego nie wynika.
Poza tym... chociaż może najpierw poczekam na odpowiedź ;p
Jeszcze coś.
*
Z pliku tego usuwasz wszystkie odwołania do składników Form1 - czyli wszelkie implementacje metod przenosisz do pliku aaa.cpp
* w pliku aaa.cpp załączasz Form1.h
Jak tak zrobię to mi wyświetla błąd "was previously declared or defined with a different managed modifier", to wrzuciłem to jako referencję do tych klas (ref przed słowem class), to jest "ok".