Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++, a C++ CLI

Ostatnio zmodyfikowano 2013-11-09 09:18
Autor Wiadomość
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:
C/C++
#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:
C/C++
//MyForm.h
#include <fstream>
//...
//dalsza część kodu
//...
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++.
P-95557
pekfos
» 2013-11-07 20:29:58
tylko C/C++.
Kod, który podałeś, nie jest w C/C++.
P-95565
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)???
Frazy, które należy wpisać w wyszukiwarkę google:


C/C++
wyjscie << this->textBox1->Text;
Frazy, które należy wpisać w wyszukiwarkę google:
Czyli można tak:
C/C++
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 "^"?
Frazy, które należy wpisać w wyszukiwarkę google:
P-95580
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.
P-95620
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?
P-95712
pekfos
» 2013-11-08 21:13:58
Skąd wziąć taką wiedzę?
Z kursów? Internetu?
P-95715
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++.
P-95748
« 1 »
  Strona 1 z 1