Avatar billede pablopablo Nybegynder
01. december 2003 - 01:28 Der er 8 kommentarer og
1 løsning

GUI i C++ unmanaged mode?

Hejsa...

1. Hvilket projekt skal jeg vælge under templates i Visual Studio for at lave et C++ projekt med mulighed for at designe GUI via "drag and drop" - MEN det skal være i unmanaged mode???

I Borlands C++ v. 5.0 kunne det lade sig gøre og det var før Dot Net kom til, så V.S. må da også have mulighed for det?

2. Hvis jeg skal lave noget kode i C++(unmanaged mode), som skal flettes sammen med C#, skal jeg så lave et C++ komponent (dll-fil), som jeg først bagefter indhenter i fx min C# form? eller er der også andre måder at gøre det på?

mvh. PabloPablo
Avatar billede jpk Nybegynder
01. december 2003 - 08:54 #1
Du kan anvende resource editoren i de fleste typer projekter, men de typiske for en stand alone app er "MFC AppWizard (exe)" eller "Win32 Application".

Hvis du vil lave en kontrol du kan bruge på din form i C# vil jeg foreslå du bruger "ATL COM AppWizard" eller "MFC ActiveX ControlWizard" hvis du ønsker at bruge MFC.
Avatar billede pablopablo Nybegynder
02. december 2003 - 00:21 #2
Øøhm...jeg mener at have prøvet at lege med disse...men under menu-punktet "View" kan jeg ikke se noget der hedder design...? Eller er jeg gal på den?

Jeg er selv glad for at programmere i C#...Dog fandt jeg ud af den anden dag, at man STADIG er tvunget til at benytte andre sprog hvis man ønsker at kommunikere med hardwaredele eller man ønsker en omtimeret performance...Men jeg er stadig i tvivl om noget...

1. I C++.Net ved jeg man kan benytte både mangaged og unmanaged kode i samme projekt eller klasse...MEN hvis man skriver unmanged kode inde i C++.NET så vil det da blive kompileret til IL form - ik`?  Vil det optimale ikke være, at lave GUI osv. i en C++.NET eller C# Form og så lave det komponent, som man fx. vil have til at inteagerer med hardwaren i REN gammeldags C++(unmanged mode) - altså IKKE under et C++.NET projekt og dermed opnå REN Native kode...eller?

2. Kan det ikke komme ud på et, om man bruger C++.NET eller C# til at lave det mindre krævende programmering, hvis man kobler det sammen på ovenstående måde?

3. Hvad er forskellen mellem : "MFC AppWizard (exe)" og "Win32 Application"?

4. Hvad er forskellen mellem : "ATL COM AppWizard" og "MFC ActiveX ControlWizard"?

Håber du kan hjælpe mig i min forvirring! :)

mvh. PabloPablo
Avatar billede jpk Nybegynder
02. december 2003 - 09:45 #3
Alle dine grafiske ting som fx ikoner/billeder/dialoger(forms) osv., finder du under "Resource Editor".

"Dog fandt jeg ud af den anden dag, at man STADIG er tvunget til at benytte andre sprog hvis man ønsker at kommunikere med hardwaredele eller man ønsker en omtimeret performance"
Hvordan fandt du ud af det..?
Der er da ganske vist en performanceforskel, men den svinger meget alt efter hvad man laver. Kigger du fx på de samples der er med i DirectX 9 SDK'en, vil du se, at der på de fleste samples, ikke er en stor forskel i fps mellem C++/C#.

Mht. spm. 1 og 2, så er der ikke noget svar! Mulighederne er flere og hvad der er optimalt for dig er sansynligvis ikke optimalt for alle andre...

3. Den første er basret på et MFC (Microsoft Foundation Classes) framework. Det betyder at koden er struktureret på en anden måde end hvis du impålementerer en typisk Win32 app. Om man kan lide det eller ej er nærmest et spørgsmål om religion. Selv synes jeg det er genialt og giver mulighed for at udvikle grafisk flotte applikationer på kort tid.

4. Den første bruger ATL (Active Template Library), den anden MFC. ATL er til dels et subset af MFC, nemlig den "lette" del, forstået på den måde at de "tunge" komponenter ikke er inkluderet. De kan således også mixes...
Avatar billede pablopablo Nybegynder
02. december 2003 - 16:35 #4
Hehe...Det fandt jeg ud af ved at snakke med folk herinde :) Du kan læse min tråd jeg kørte for nogle dage siden her...http://www.eksperten.dk/spm/434244
og du må meget gerne komme med din mening herom!-)

Hvordan ville du fx. vælge at lave et program, som kommunikere med com-porten, hvis du var glad for at programmere i C#!?
Avatar billede pablopablo Nybegynder
02. december 2003 - 16:57 #5
Hov...glemte lige noget...ang. mit spg.1 som du skriver der ikke er noget svar på...

Jeg ved ikke rigtigt hvordan jeg ellers skal formulerer det...men det jeg er interesseret i at vide er...hvordan jeg skal konstruere/sammensætte et program med C# og C++ kode bedst? altså om jeg skal knytte C# koden koden sammen med C++.Net managed kode(afhængig af, om pågældende opg. kan løses heri), C++.Net unmanged kode(som oversættes til IL) eller REN C++ kode som IKKE oversættes til IL-kode?

Håber du kan se min pointe?-)

2. Hvis jeg man bruger tid på at skrive unmanaged kode i C++ og det så ved kompilering bliver oversat til IL kode...er det så ikke spildt arbejde? eller har jeg misforstået noget?

3. I min C# bog står der følgende : "Med unsafe - ikke sikker - kode i C# kan man bruge pointervariabler, og koden bruges når ydeevnen er yderst vigtig eller når der sker interfacing med eksisterende software osm fx COM-objekter eller produktspecifikt - native - C-kode i DLL-filer..."
Indtil jeg læste dette igår, vidste jeg ikke man kunne kører unsafe mode i C#...Men hvad betyder dette egentligt - set i forhold til vores C++ snak?

4. Et par linier senere står der : "Da unsafe kode ikke kan verifiveres til at være sikker i runtime kan den kun eksekveres hvis den bliver anset for fuldstændig sikker af runtime. Dette hindrer eksekvering i download-scenarier".

Hvordan skal dette helt forstås?
Avatar billede jpk Nybegynder
03. december 2003 - 08:59 #6
Eftersom du kigger efter en måde at tilgå seriel porte på fra C#, kan du måske bruge denne artikel:
http://msdn.microsoft.com/msdnmag/issues/02/10/NETSerialComm/default.aspx

Hvis du kan finde en fornuftig måde at tilgå seriel-portene på, i C#, kan du bruge den. Ovenstående eksempel skulle virke fra alle .NET sprogene.
Ellers må du kode det i C++...
Jeg vill ikke vælge C++ bare fordi det er "tættere" på hardwaren, hvis det iøvrigt ikke er det du har brug for! Nu er seriel komunikation jo ikke lige det mest belastende.

Altså, tilbage til dit spørgsmål; Jeg ville vælge ren C#, hvis jeg kunne finde en tilfredstillende løsning.

Hvis du vil lave et program der kun skal bruges på Windows, ville jeg kompilere til native code. Som tidligere nævnt er der C# eksempler med til DirectX SDK'en. Når koden kompileres til .exe, er der ikke ernorm hastighedsforskel i forhold til de tilsvarende C++ eksempler!
(DirectX er iøvrigt COM)

Jeg forstår teksten i dit 4. spm således, at koden ikke kan eksekveres ved at du fx klikker på en knap på et website. Eftersom koden ikke kan verificeres, er der heller ikke nogen måde at vide om den er skadelig!
Avatar billede pablopablo Nybegynder
03. december 2003 - 15:28 #7
Du skal nok få points...men lige til sidst...Du skrev : "Hvis du vil lave et program der kun skal bruges på Windows, ville jeg kompilere til native code. "

Hvordan går man det?-)
Avatar billede pablopablo Nybegynder
03. december 2003 - 15:29 #8
Der skulle selvfølgelig står : Hvordan gør man det...
Avatar billede jpk Nybegynder
03. december 2003 - 15:29 #9
"Build Solution"...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester