Avatar billede codecow Nybegynder
07. januar 2005 - 17:11 Der er 3 kommentarer og
1 løsning

Problem med at benytte COM vha MFC class wizard

Hej.

Jeg vil gerne bruge COM objekter i min C++ kode.
I .Net 2003 er der en MFC class wizard som jeg benytter til at
skabe en header til COM objektet Ms Commondialog 6.0 ud fra type library'et.

Derefter trode jeg at man så bare kunne behandle det som et normalt objekt.
dvs:

#include "CommonDialog.h"
....
CommonDialog comDlg;
comDlg.ShowColor();

Det compiler fint men der kommer bare ikke en Color dialog frem.
Det nedenstående kode virker, men hvordan benytter man Class wizarden til at bruge COM objekter ? Jeg har også prøvet at skabe en reference til COM librayet men det hjalp ikke.

Er det ikke muligt at benytte COM objekter i C++ a la Visual Basic ?

#import "C:\WINDOWS\system32\comdlg32.ocx" no_namespace
....
    hres = CoInitialize( NULL );
    if( hres != S_OK ) {
      MessageBox( 0, "CoInitialize failed", "ERROR", 0 );
    }
   
    ICommonDialogPtr ComDlgPtr( __uuidof(CommonDialog));
// Create smart pointer
    ComDlgPtr->ShowColor();
    ComDlgPtr = NULL; // Release smart pointer
    CoUninitialize();
....
Avatar billede zapzap Nybegynder
11. januar 2005 - 15:48 #1
Jo, du kan godt bruge COM objekter, og den version du bruger skulle der være rigtig god support i - i form af mange linier sparet kode.
Du ved godt at der er MFC support for common dialogs, ikk?
Avatar billede codecow Nybegynder
11. januar 2005 - 16:45 #2
Hej

Jo jeg ved godt at der er CommonDialog'er i MFC, det var nu mere for at have nogle COM objekter at "lege" med for at finde ud af hvordan .Net 2003 virker mht. COM at jeg brugte dem.:)

Mit problem består mere i hvordan man bruger .Net 2003 til at simplificere COM programmering.
Jeg har ikke kunnet google mig frem til en tutorial eller et eksempel.
Nogen ideer ?

Hjælp modtages med tak
Avatar billede jpk Nybegynder
17. januar 2005 - 08:35 #3
Prøv at debugge koden og se hvilke kald der laves i vrapper-klassen du har genereret.
"COM-funktioner" returnerer en HRESULT kode, der angiver hvilken fejl der evt. opstod, måske den kan bruges til at finde fejlen...
Det er ikke sikkert at vrapperen sørger for CoInitialize-kaldet, har du prøvet at kalde den først (som i dit andet ex)?
Avatar billede codecow Nybegynder
06. juli 2005 - 14:01 #4
lukker
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