Wstęp do Visual C++

Na wstępnie jak zawsze polecę książkę w której jest naprawdę dobrze opracowany kurs i przykłady a mianowicie "Visual C ++ 2008", którą można kupić w  http://helion.pl/ksiazki/microsoft-visual-c-2008-praktyczne-przyklady-mariusz-owczarek,vc28pp.htm. za 49zł. Można także pouczyć się z kursu który sam zamieściłem, ale wiadomo, że w komercyjnych źródłach znajdziecie więcej przykładów niż tu. W kursie nie opisywałem takich zagadnień jak polimorfizm, ponieważ już to opisałem w kursie dla Javy SE. Więc jak ktoś jest ciekaw co to jest polimorfizm, klasy abstrakcyjne i interfejsy, to zapraszam do działu Java/JS.

Aby pobawić się Visual C++ należy zainstalować Visual C++ Express jest to darmowa wersja pakietu Visual Studio, którą można pobrać z http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-cpp-express Oczywiście po 30 dniach będziecie musieli się zarejestrować, aby korzystać z tego produktu. Tu mała uwaga jeśli zainstalowaliście wcześniej pakiet Web Deweloper Express, to będziecie musieli go odinstalować, bo Microsoft standardowo dał ciała. Jeśli zainstalujecie te dwa produkty naraz, to ani jeden ani drugi nie będzie działał. Oddzielnie działają idealnie.

Visual C++ jest programem do pisania aplikacji w języku C++, można w nim pisać zarówno programy na konsole jak i programy okienkowe. Wybierając New Project->CLR->Windows Forms Apllications tworzymy aplikację okienkowe, a wybierając Win32->Win32 Console Application tworzymy aplikacje konsolowe.

Jeśli już wybraliśmy aplikacje okienkową, To forma1 powinna sama pokazać się w naszym programie. Jeśli chcemy więcej form, albo przypadkowo ją skasowaliśmy to tworzy się je klikając na Project->Add New items (tak jak w każdym programie) i wybieramy Formę tak jak na obrazku poniżej.

Klikając na formie dwa razy przechodzimy do samego kodu i możemy go modyfikować jak tylko nam się podoba. Klikając drugim przyciskiem na formę i wybierając Properties możemy modyfikować wszystkie najważniejsze właściwości okna (widzialność, rozmiar, nazwa itp).

Aby wstawić jakieś elementy interaktywne do naszej aplikacji wystarczy wybrać z narzędzi interesujący nasz przycisk i przeciągnąć go na formatkę, tak jak to było w Delphi czy Web Deweloperze. Tak samo jak w Delphi można oprogramować przycisk, wystarczy kliknąć na nim 2 razy, a Visual C++ sam utworzy metodę w formatcę, która będzie uruchamiana podczas kliknięcia przycisku.

Jeśli nasz program ma się tylko zamknąć, to wystarczy w przycisku wpisać Close();

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) { Close();
}

My oczywiście dodamy coś jeszcze, żeby się nie nudzić. Wrzucimy do naszego projektu jeszcze jeden przycisk i pole label1 (pole tekstowe). Po naciśnięciu przycisku będzie się ukazywało w polu tekstowym znane określenie "Hello World". Aby tego dokonać trzeba kliknąć na drugi przycisk, program automatycznie utworzy nam event, który będzie wywoływany po naciśnięciu drugiego przycisku. Wystarczy odnieść się do obiektu label1 i jego właściwości Text. Robimy to poprzez operator "->" i będziemy tak robić podczas odwołań do wszystkich właściwości komponentów i zmiennych zadeklarowanych jako wskaźniki (opis tego skąd się to bierze jest tu: http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=222&Itemid=249), natomiast to zmiennych deklarowanych jako inne typy będziemy odnosić się poprzez ".":

label1->Tekst="Hello World";

Całość powinna wyglądać tak:

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {label1->Text="Hello World";}

Aby odpalić jakiś inny program przy pomocy naszego programu (np. stronę www) można użyć klasy takiej jak System. Aby tego dokonać wystarczy dodać klocek LinkLabel i w jego właściwościach ustawić Text na np."http://avrkwiat.nstrefa.pl/omnie/". Teraz kliknąć ten klocek 2 razy, a zostanie utworzona metoda odpowiedzialna za zdarzenie wywołane podczas kliknięcia. Wystarczy przejść do kodu i wpisać tam coś takiego:

System::Diagnostics::Process::Start(linkLabel1->Text)

Metoda Start przyjmie jako wartość tekst umieszczony w LinkLabel i otworzy go w przeglądarce. Możemy potem zmienić własność LinkVisited na true np. tak: linkLabel1->LinkVisited=true; Co będzie oznaczało link odwiedzony i taki link zmieni automatycznie kolor na wybrany w właściwościach VisitedLinkColor. Tu pewnie zdziwiliście się czemu do klasy System nie użyliśmy"->" tylko "::", odpowiedź jest prosta. Jeśli nie ma utworzonego obiektu, a my operujemy na samej klasie, to używamy "::", a jeśli jest stworzony obiekt, to odnosimy się do niego poprzez "->". Klasy, do których nie można przypisać obiektu, to klasa statyczna. Klasa abstrakcyjna, to taka którą trzeba nadpisać (czyli musi być podklasą), a klasa finalna, to taka której się nie da nadpisać.

System::Int16 liczba = System::Int16::Parse("435");

Powinno zmienić tekst 435 na liczbę całkowitą 16-bitową i zapisać ją do zmiennej liczba, która ma typ Int16.

Wystarczy teraz zbudować projekt i przetestować, czyli po prostu wcisnąć F5 lub zielony trójkąt tak jak to było w Delphi, Netbeans itp.

Wiedząc jak wywołuje się metody poszczególnych obiektów można stworzyć wszystko co tylko się chce. Reszta jest praktycznie w każdym języku taka sama i łatwo można przeskoczyć z jednego języka na inny.