Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Копировать текст в буфер


Автор: maq 1.4.2009, 08:57
Добрый день. Я не могу скопировать текст в буфер обмена. Проект в Юникоде. Выскакивает ошибка.
Код

if(!OpenClipboard()) return;
if(EmptyClipboard())
{
    wchar_t wc[1000];
    wcscpy_s(wc, sText);
    
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, (sizeof(wchar_t) * sText.GetLength())+1
    wcscpy((wchar_t*)GlobalLock(hGlobal), wc);
    GlobalUnlock(hGlobal);
    HANDLE hRes = SetClipboardData(CF_UNICODETEXT, hGlobal);
}
CloseClipboard();

При вызове SetClipboardData выскакивает ошибка:

Windows has triggered a breakpoint in projectfilename.exe

This may be due to a corruption of the heap? And indicates a bug in ……..

Автор: Alca 1.4.2009, 09:33
Код

GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, (sizeof(wchar_t) * sText.GetLength())+1

Может так?
Код

GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, (sizeof(wchar_t) * sText.GetLength()) + 1);


Добавлено через 6 минут и 58 секунд
Код

...
OpenClipboard(FClipboardWindow);
......
MultiByteToWideChar(CP_ACP, 0, Buffer, size, PWideChar(DataUncPtr), size);
SetClipboardData(CF_UNICODETEXT, DataUnc);
....
Move(Buffer^, DataTxtPtr^, Size);
SetClipboardData(CF_TEXT, DataTxt);
....
CloseClipboard


Добавлено через 9 минут и 3 секунды
http://forum.sources.ru/index.php?showtopic=194915

Добавлено через 9 минут и 42 секунды
че за sText???

Автор: maq 2.4.2009, 12:47
sText - CString

Спасибо, вопрос решен!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)