Mi dica per favore, perché ottengo questo problemi:GetClipboardData (CF_UNICODETEXT);
se appunti contengono caratteri unicode (e.q. russo) ottengo solo la prima parola selezionata. Prima parola prima del carattere "spazio".
se gli appunti non contengono caratteri unicode (solo in inglese) Ottengo il primo carattere del testo selezionato.
selezionato testo:
CStringA getClipboard()
{
CStringA strData;
if (OpenClipboard(NULL)){
HANDLE hClipboardData = GetClipboardData(CF_UNICODETEXT);
char *pchData = (char*)GlobalLock(hClipboardData);
strData = pchData;
GlobalUnlock(hClipboardData);
CloseClipboard();
}
return strData;
}
Set testo:
bool setClipboard(CStringA textToclipboard)
{
bool success = true;
if (OpenClipboard(NULL)){
EmptyClipboard();
HGLOBAL hClipboardData;
size_t size = (textToclipboard.GetLength()+1) * sizeof(TCHAR);
hClipboardData = GlobalAlloc(NULL, size);
TCHAR* pchData = (TCHAR*)GlobalLock(hClipboardData);
memcpy(pchData, LPCTSTR(textToclipboard.GetString()), size);
SetClipboardData(CF_UNICODETEXT, hClipboardData);
GlobalUnlock(hClipboardData);
CloseClipboard();
}
return success;
}
ottiene semplicemente e il contenuto degli appunti set.
CStringA str = getClipboard();
setClipboard(str);
CStringA è una stringa ANSI - per UNICODE è necessario CStringW. –
Non funziona. Ricevo i simboli B5: AB e strani "angoli" – user1537809
Non è 'CF_UNICODETEXT' UTF-16, cioè la stringa di formato' W' standard, che significa per standard ascii, si otterrà solo un carattere. – Petesh