Echelon Temat założony przez niniejszego użytkownika |
C++, a C++ CLI » 2013-11-07 19:41:57 Witam Wszystkich. Pisze,bo potrzebuje pomocy w nauce programowania.Od jakiegoś czasu stoję w ,,martwym punkcie''.Chciałbym się przerzucić na Visual Studio(mam VS 2012 professional). Jest jednak kilka zagadnień na które nie znalazłem odpowiedzi w swoich książkach a i w internecie jest ciężko. 1.Czym różni się projekt typu Win32 a CLR z Windows Forms Application? Osobiście prawie nie używałem Win32,skupiłem się raczej na Windows Forms(wydaje się trochę prostszy). 2.Jak ponownie uruchomić okienko z designem programu?Bardzo mnie to denerwuje ponieważ jeśli przypadkowo je zamknę to potem nie wiem jak je pokazać ponownie i muszę wczytać cały projekt od nowa. 3.Aby uruchomić program z Windows Forms trzeba wpisać w pliku źródłowym następujący kod: #include "MyForm.h" using namespace System; using namespace System::Windows::Forms; [ STAThread ] int main() { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault( false ); Project1::MyForm form; Application::Run( % form ); } a)co to [STAThread]??? b)Co oznacza "%" w Application::Run(%form)??? 4.Od dawna próbuje stworzyć program w WFA program,który po naciśnięciu przycisku zapisywał by w notatniku zawartość textBoxa. Z jakiegoś powodu zapisywanie do pliku w WFA jest znacznie bardziej skomplikowane niż w aplikacjach konsolowych.Oto kod: #include <fstream>
private: System::Void button1_Click( System::Object ^ sender, System::EventArgs ^ e ) { std::ofstream wyjscie( "BazaDanych.txt" ); wyjscie << this->textBox1->Text; wyjscie.close(); }
kompilator podkreśla mi wtedy operator << i mówi takie coś: "Error:no operator "<<" matches these operands.Operator types are: std::ofstream<<System::String^" No więc...Dlaczego to nie chce działać(w konsoli działa!) i co to jest String^?W ogóle co to znaczy "^"? krótkie outro Wielkie thx za pomoc, proszę o wyrozumiałość za moją niewiedzę. Pytam, bo kto pyta nie błądzi :D. I jeszcze jedna rzecz. Nie umiem nic z si szarpa C# a lubię rozumieć co robię więc proszę nie wysyłać kodu z C# tylko C/C++. |
|
pekfos |
» 2013-11-07 20:29:58 Kod, który podałeś, nie jest w C/C++. |
|
Monika90 |
» 2013-11-07 21:07:39 Niektórzy źle reagują, kiedy im mówić, że to nie jest C++. :) b)Co oznacza "%" w Application::Run(%form)??? |
wyjscie << this->textBox1->Text;
|
Czyli można tak: using namespace System::Runtime::InteropServices; char * p = static_cast < char *>( Marshal::StringToHGlobalAnsi( this->textBox1->Text ).ToPointer() ); wyjscie << p; Marshal::FreeHGlobal( IntPtr( p ) );
co to jest String^?W ogóle co to znaczy "^"? |
|
|
DejaVu |
» 2013-11-08 00:59:34 Generalnie rzecz biorą C++ oraz C++ CLI można traktować w kategoriach dwóch różnych języków programowania. Ja sam przez długie lata nie wiedziałem, że istnieje coś takiego jak C++ CLI. Zasadniczą różnicą między C++, a C++ CLI jest to, że CLI ma garbage collector, czyli tzw. odśmiecacz pamięci oraz jednocześnie umożliwia zarządznie samodzielne pamięcą. W związku z tym, że C++ CLI posiada tradycyjny model zarządza pamięcią oraz model zarządzania pamięcią oparty o garbage collector, to składnia do definiowania zmiennych zarządzanych 'automatycznie' jest inna niż tych, które są zarządzane 'ręcznie'.
Generalnie C++ CLI jest raczej dla osób, które już mają wiedzę poukładaną z czystego C++ oraz wiedzą do jakiego celu potrzebują C++ CLI. |
|
Echelon Temat założony przez niniejszego użytkownika |
» 2013-11-08 21:05:56 yyyy ok...Czuje się jak w programistycznej Incepcji, właśnie się dowiedziałem że wszedłem w nowy język programowania :D
Ten kod rzeczywiście działa i już zacząłem go analizować...Ale powiedzcie mi...Skąd wziąć taką wiedzę? Wy pewnie pracujecie już jako programiści ale ja jestem dopiero w liceum... Mój nauczyciel twierdzi że to wykracza poza jego możliwości...Polecacie jakąś konkretną książkę?
Poza tym wciąż mierzwi mnie czym się różni Win32 od WFA.W czym i kiedy powinienem pracować i dlaczego? |
|
pekfos |
» 2013-11-08 21:13:58 |
|
Monika90 |
» 2013-11-09 09:18:23 czym się różni Win32 od WFA |
Win32 to normalny program w C albo C++, skompilowany do kodu maszynowego, który będzie wykonywany bezpośrednio przez procesor. WFA czyli Windows Forms Application - program w języku C++/CLI (albo C#, F#, Visual Basic) będzie wykonywany przez maszynę wirtualną. Windows Forms to jest biblioteka GUI, przeznaczona właśnie dla programów działających w maszynie wirtualnej Microsoftu zwanej CLR (Common Language Runtime), która jest częścią platformy .NET. Zapomnij o C++/CLI, bo to jest jakiś koszmar. Jak chesz korzystać z Windows Forms to używaj C#, a jak chcesz nauczyć się C++, to ucz się standardowego C++. |
|
« 1 » |