/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
mfc automation
Fra : Ukendt


Dato : 26-11-07 19:19


Hej,

Hvis en applikation er lavet ved at sætte kryds i "Automation" i et gammelt
MFC projekt, er det så vha COM at man skal styre den , eller ? Hvis man har
en knap der hedder ID_OK, skal man så styre programmet vha denne knap id ?

Hints ?

mvh
Troels



 
 
Mogens Hansen (26-11-2007)
Kommentar
Fra : Mogens Hansen


Dato : 26-11-07 21:39


"Troels Thomsen" <nej tak ...> wrote in message
news:474b0e3c$0$15885$edfadb0f@dtext01.news.tele.dk...
>
> Hej,
>
> Hvis en applikation er lavet ved at sætte kryds i "Automation" i et
> gammelt MFC projekt, er det så vha COM at man skal styre den , eller ?
> Hvis man har en knap der hedder ID_OK, skal man så styre programmet vha
> denne knap id ?

Nej.
Applikationen skal publicere et objekt-orienteret interface, som andre kan
tilgå.

>
> Hints ?

Find nogle gode bøger om COM programmering, f.eks.
Inside OLE, Second Edition
Kraig Brockschmidt
ISBN 1-55615-843-2
og
Programming Windows with MFC, Second Edition
Jeff Prosise
ISBN 1-57231-695-0
som indeholder godt 200 sider om MFC og COM programmering.

Hvis du kan undgå COM, så gør det.

--
Venlig hilsen

Mogens Hansen



Ukendt (26-11-2007)
Kommentar
Fra : Ukendt


Dato : 26-11-07 23:00

>
> Hvis du kan undgå COM, så gør det.
>

Jeg skal sådan set bare opnå, at nogen kan fjernstyre dette program fra
noget .net.
Jeg har sourcen, så jeg kan godt lave en smule om.
Hvad er mulighederne?

Altså det kan vel lade sig gøre at poste events til gui kontrollerne fra en
anden applikation, men er det ikke lidt crude ?
Hmm, lytte på en IP port, og så sende kommandoer den vej

Troels


Mogens Hansen (27-11-2007)
Kommentar
Fra : Mogens Hansen


Dato : 27-11-07 08:58


"Troels Thomsen" <nej tak ...> wrote in message
news:474b4203$0$15893$edfadb0f@dtext01.news.tele.dk...
> >
>> Hvis du kan undgå COM, så gør det.
>>
>
> Jeg skal sådan set bare opnå, at nogen kan fjernstyre dette program fra
> noget .net.

Ok.

> Jeg har sourcen, så jeg kan godt lave en smule om.
> Hvad er mulighederne?

Der er en pæn håndfuld muligheder, f.eks.
* Isoler funktionaliteten i et DLL, som bruges fra både .NET og MFC
applikationen, evt. med en C++/CLI wrapper lag
* Isoler funktionaliteten i en (COM, ICE, CORBA, TCP/IP) server, som både
fra både .NET og MFC applikationen
* Lav en COM server inde i MFC applikationen, som .NET applikationen
kalder
* Lav en ICE eller CORBA server inde i MFC applikationen, som .NET
applikationen kalder.

Det simpleste kan sagtens være at lave en COM server inde i MFC
applikationen, men man får så ulemperne med registering i registry,
begrænset type interface etc.

COM understøtter 2 typer interfaces: vtable og automation. Undgå om muligt
automation, fordi det er et dynamisk typet interface som blev lavet af
hensyn til tidlige udgaver af VB. Det passer dårligt med statisk typede
sprog som C++ og C#, og giver unødvendigt runtime overhead.

Jeg vil anbefale at kigge f.eks. i den bog jeg henviste til eller finde
nogle gode sider på nettet om MFC og COM programmering.

>
> Altså det kan vel lade sig gøre at poste events til gui kontrollerne fra
> en anden applikation, men er det ikke lidt crude ?

Du risikerer nemt at få problemer med det, hvis det skal køre på Vista.
Rettighedssystemet sætter, så vidt jeg har forstået, restriktioner på det at
sende events mellem applikationer.

Envidere hvis du er heldig (det er man næsten aldrig) er MFC applikationen
delt pænt op i brugerflade og "business logik", og det du ønsker er at
benytte business logikken. Der vil det være en omvej at anvende brugerfladen
som interface - f.eks. er en dialogboks ofte blot en måde at sætte nogle
parametre op til et kald i business logikken.
Det du så har brug for er en anden (COM, CORBA, ICE etc.) interface til
business logikken.

> Hmm, lytte på en IP port, og så sende kommandoer den vej

Ja - men det er også lidt tungt, hvis der bliver ret mange kommandoer.

--
Venlig hilsen

Mogens Hansen



Michael Rasmussen (27-11-2007)
Kommentar
Fra : Michael Rasmussen


Dato : 27-11-07 16:00

On Tue, 27 Nov 2007 08:58:11 +0100
"Mogens Hansen" <mogens_h@dk-online.dk> wrote:

> * Isoler funktionaliteten i en (COM, ICE, CORBA, TCP/IP) server,
Mig bekendt understøtter .NET ikke CORBA?

> Envidere hvis du er heldig (det er man næsten aldrig) er MFC
> applikationen delt pænt op i brugerflade og "business logik", og det
> du ønsker er at benytte business logikken. Der vil det være en omvej
> at anvende brugerfladen som interface - f.eks. er en dialogboks ofte
> blot en måde at sætte nogle parametre op til et kald i business
> logikken. Det du så har brug for er en anden (COM, CORBA, ICE etc.)
> interface til business logikken.
>
Hvad med at lave et SOAP interface til business laget vha. gSOAP:
http://www.cs.fsu.edu/~engelen/soap.html

Det er ganske let, og interfacer perfekt med .NET og C++. En yderligere
fordel er, at det burde virke selv under Vista, da SOAP er den
foretrukne HTTP-baserede distribuerede arkitektur i .NET

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Michael Rasmussen (27-11-2007)
Kommentar
Fra : Michael Rasmussen


Dato : 27-11-07 22:56

On Tue, 27 Nov 2007 17:17:10 +0100
"Mogens Hansen" <mogens_h@dk-online.dk> wrote:

>
> Det viste jeg ikke da jeg tilgik en CORBA server fra C# - beklager
>
Nu skrev jeg også .NET

> Jeg brugte IIOP
> http://iiop-net.sourceforge.net/
Jeg har haft den i kikkerten før. Har du nogen erfaringer, du har lyst
til at dele af?

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Søg
Reklame
Statistik
Spørgsmål : 177420
Tips : 31962
Nyheder : 719565
Indlæg : 6407875
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste