Foros del Web » Programación para mayores de 30 ;) » C/C++ »

manejo de portapapeles de windows

Estas en el tema de manejo de portapapeles de windows en el foro de C/C++ en Foros del Web. muy buenas ando bastante perdido con el portapapeles de windows tengo la funcion getPortapapeles y setPortapapeles. el get funciona correctisimo pero en cambio el set ...
  #1 (permalink)  
Antiguo 05/09/2009, 15:05
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
manejo de portapapeles de windows

muy buenas ando bastante perdido con el portapapeles de windows
tengo la funcion getPortapapeles y setPortapapeles.

el get funciona correctisimo pero en cambio el set no me funciona del todo bien, me explico:
aqui intento copiar y pegar lo que tenemos en el portapapeles
Código:
main()    {
    char *buffer = new char[1024];
 
    buffer = getPortapapeles();
    setPortapapeles(buffer);// no me funciona el set
}
en cambio si solo queremos pegar al portapapeles todo va correcto
Código:
main()    {
    char *buffer = new char[1024];
 
//    buffer = getPortapapeles();
    strcpy(buffer,"esto si que funciona");
    setPortapapeles(buffer);// inserta correctamente
}
aqui las dos funciones get & set que por separado funcionan a la perfeccion pero juntas dejan mucho que desear
Código:
char * getPortapapeles()    {
       char buffer[1024];
    if ( OpenClipboard(NULL) ) 
    {
        HANDLE hData = GetClipboardData( CF_TEXT );
        if (!hData) return 0;
        char * buffer = (char*)GlobalLock( hData );
 
        GlobalUnlock( hData );
        CloseClipboard();
        return buffer;
    }
return 0;
}
Código:
setPortapapeles(char *str)    {
    if (OpenClipboard(NULL))
    {
        HGLOBAL hClipboardData;
        char * pchData;
 
        EmptyClipboard();
        hClipboardData = GlobalAlloc(GMEM_DDESHARE, strlen(str)+1);
        pchData = (char*)GlobalLock(hClipboardData);
        strcpy(pchData, str);
        GlobalUnlock(hClipboardData);
        SetClipboardData( CF_TEXT,hClipboardData); //CF_TEXT  CF_HDROP
        CloseClipboard();
    }
}
alguien es tan amable de decirme porque me fallan?
gracias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:24.