2009-03-09 8 views
1

誰でも次のコードをC++に翻訳できますか?これはすべて可能か、重要な情報が欠落していますか?COMオブジェクトを初期化する/ VBコードを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 

答えて

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、あなたがおそらくのCoInitializeを毎回呼び出す必要がないことを言及しなければなりません。アプリの起動時に1回、ティアダウンで1回(1つのアパートメントがある場合)は正常です。 – casperOne

+0

はいあなたは正しく、それに応じて更新されます – Vinay

+0

CLSIDはCLSIDFromProgIdを使用して取得できます。 – Ismael

関連する問題