Ayuda no me copia el string entero

Iniciado por PabloPbl, 10 Diciembre 2015, 15:56 PM

0 Miembros y 1 Visitante están viendo este tema.

PabloPbl

Estoy trabajando con el portapapeles en c++ y estuve viendo ejemplos en la web y he implementado el metodo.

Pero resulta que cuando uso este método para copiar texto al portapapeles, me lo copia, pero cuando hago la prueba, me queda faltando el ultimo carácter del string que le pase el metodo.

Si yo copio:
Codigo --> me copia --> Codig

Este el método que utilizo en mi programa:

Código (cpp) [Seleccionar]

void toClipboard(const std::string &s){
OpenClipboard(0);
EmptyClipboard();
HGLOBAL hg=GlobalAlloc(GMEM_MOVEABLE,s.size());
if (!hg){
CloseClipboard();
return;
}
memcpy(GlobalLock(hg),s.c_str(),s.size());
GlobalUnlock(hg);
SetClipboardData(CF_TEXT,hg);
CloseClipboard();
GlobalFree(hg);
}


Gracias de antemano.

ivancea96

Código (cpp) [Seleccionar]
GlobalAlloc(GMEM_MOVEABLE,s.size());

Coloca s.size()+1. Uno más que el tamaño de la string.
No sé si tiene que evr con caracteres nulos, o si es otra peculiaridad, así que no te puedo dar la razón por la cual debiera funcionar así :S

PabloPbl

Muchas gracias por la ayuda, funciona perfecto  ;D

Salu2.