2009-03-09 5 views
1

Quelqu'un peut-il traduire le code suivant en C++? Est-ce possible ou y a-t-il des informations vitales manquantes?Initialiser l'objet COM/Traduire le code VB en C++

 
Dim Laser As Object 
Sub EnableLaser 
    ‘ Create a laser object if it hasn’t been done yet 
    If Laser Is Nothing Then 
     Set Laser = CreateObject("NWLaserXControl.NWLaserX") 
    End If 
    If Laser.Initialize Then 
     Laser.RepRate = 10 ‘ set the rep rate to 10Hz 
     Laser.LaserEnabled = True ‘ turn on laser power supply, get it ready 
    End If 
End Sub 

Répondre

1
// if (CoInitialize(0) == S_OK) 
{ 
    CComPtr<INWLaserX> pMyPtr = NULL; 

    CLSID clsid = IID_NULL; 
    CLSIDFromProgID("NWLaserXControl.NWLaserX"); 

    if (pMyPtr.CoCreateInstance(clsid) == S_OK) 
    { 
     pMyPtr->put_RepRate(10); 
     pMyPtr->put_LaserEnabled(TRUE); 
    } 

    // CoUnInitialize(); 
} 
+0

@Vinay: +1, mais il convient de mentionner que vous n'avez probablement pas besoin d'appeler CoInitialize chaque fois. Une fois au démarrage de l'application, et une fois sur le démontage (si vous avez un appartement) est bien. – casperOne

+0

Oui, vous avez raison, mise à jour en conséquence – Vinay

+0

Vous pouvez obtenir le CLSID en utilisant CLSIDFromProgId. – Ismael