none
Transformar el siguiente código de C++/CLI a Managed Extension C++ de Visual Studio 2002 RRS feed

  • Pregunta

  • Dada la siguiente pregunta

    http://social.msdn.microsoft.com/Forums/es-ES/vcppdotnetes/thread/5e03cdd5-875e-491b-b40c-7d6d86b43556

    Se puedo transformar este código de C++/CLI a Managed de C++ de Visual Studio 2002?

    bool IsPrinterOk(String ^printerName)
    {
        bool bResult=false;
        HANDLE hPrinter;
    
    
        IntPtr pPrinterName=Marshal::StringToHGlobalUni(printerName);
        WCHAR *pChar=(WCHAR *)pPrinterName.ToPointer();
    
        if(::OpenPrinter(pChar,&hPrinter,NULL)==0)
            return false;
    
        DWORD bytesNeeded;
        ::GetPrinter(hPrinter,2,0,0,&bytesNeeded);
        PRINTER_INFO_2 *pf=(PRINTER_INFO_2 *)GlobalAlloc(GPTR,bytesNeeded);
    
        if(::GetPrinter(hPrinter,2,(LPBYTE)pf,bytesNeeded,&bytesNeeded)!=0)
            if(pf->cJobs==0 && pf->Status==0)
                bResult=true;
    
        GlobalFree(pf);
    
        ClosePrinter(hPrinter);
    
        return bResult;
    }

    Si es posible, Cuáles son los cambios?

    Gracias.

    miércoles, 11 de abril de 2012 19:29

Respuestas

  • Yo no sé "managed extensions", pero debes cambiar la firma del método y la llamada que obtiene pPrinterName desde el string manejado...

    Una forma un tanto barroca de convertirlo sería que generaras una biblioteca con ese código y generes una DLL. Luego la cargas con algún .NET reflector que enseñe el código fuente en varios lenguajes y que soporte las "managed extensions" y entonces verás el código equivalente... El de Red Gate creo que lo hace...


    MVP Visual C++ - Visita mi blog sobre desarrollo: http://geeks.ms/blogs/rfog/

    miércoles, 25 de abril de 2012 12:29
    Moderador