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:
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.
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
Muchas gracias por la ayuda, funciona perfecto ;D
Salu2.