/
MadDAD
/
alterplast
Обзор
Документация
Войти
/
MadDAD
/
alterplast
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
1cpp/Source/System/Clipboard.cpp
87 строк
2 KB
trdm
+
24 мар 2017, 11:36
24 мар 2017, 11:36
f368595
Код
Авторство
О чём код?
///////////////////////////////////////////////////////////////////////////// // CClipboard.cpp: implementation of the CClipboard class. // develop by artbear // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Clipboard.h" //_____________________________________________________________________________ // // CClipboard Maps //_____________________________________________________________________________ // BEGIN_BL_METH_MAP(CClipboard) BL_METH_FUNC("Get", "��������", 0, funcGet) BL_METH_PROC("Set", "����������", 1, funcSet) END_BL_METH_MAP() BEGIN_BL_PROP_MAP(CClipboard) END_BL_PROP_MAP() IMPLEMENT_MY_CREATE_CONTEXT(CClipboard, "Clipboard", "�����������"); const int USED_CLIPBOARD_TEXT_FORMAT = CF_TEXT; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// BOOL CClipboard::funcGet(CValue &RetVal, CValue **ppValue) { RetVal = Get(); return TRUE; } BOOL CClipboard::funcSet(CValue **ppValue) { ValidateParamString(*ppValue[0], "CClipboard::Set - ������ ���� �������� ������"); Set(ppValue[0]->GetString()); return TRUE; } CString CClipboard::Get() { CString result = ""; COleDataObject clipboardData; clipboardData.AttachClipboard(); if (!clipboardData.IsDataAvailable(USED_CLIPBOARD_TEXT_FORMAT)) return result; const HGLOBAL hGlobal = clipboardData.GetGlobalData(USED_CLIPBOARD_TEXT_FORMAT); if (!hGlobal) RuntimeError("CClipboard::Get - ������ ������ � ������� ������"); const LPVOID lpText = GlobalLock(hGlobal); result = static_cast<char*>(lpText); GlobalUnlock(hGlobal); GlobalFree(hGlobal); return result; } void CClipboard::Set(const CString& str) { // COleDataSource::SetClipboard ��������� ������ ���������� pDataSource � ���������� ���������� ������ COleDataSource* const pDataSource = new COleDataSource; const int nTextLen = (str.GetLength()+1)*sizeof(TCHAR); const HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, nTextLen); if (!hGlobal) RuntimeError("CClipboard::Set - ������ ��������� ������"); LPVOID lpText = GlobalLock(hGlobal); memcpy(lpText, str, nTextLen); GlobalUnlock(hGlobal); pDataSource->CacheGlobalData( USED_CLIPBOARD_TEXT_FORMAT, hGlobal ); pDataSource->SetClipboard(); }