@ -779,35 +779,49 @@ double stodLocale(const generic_string& str, _locale_t loc, size_t* idx)
return ans ;
}
bool str2Clipboard ( const TCHAR * str2cpy , HWND hwnd )
bool str2Clipboard ( const generic_string & str2cpy , HWND hwnd )
{
if ( ! str2cpy )
return false ;
int len2Allocate = lstrlen ( str2cpy ) + 1 ;
len2Allocate * = sizeof ( TCHAR ) ;
unsigned int cilpboardFormat = CF_TEXT ;
cilpboardFormat = CF_UNICODETEXT ;
int len2Allocate = ( str2cpy . size ( ) + 1 ) * sizeof ( TCHAR ) ;
HGLOBAL hglbCopy = : : GlobalAlloc ( GMEM_MOVEABLE , len2Allocate ) ;
if ( hglbCopy = = NULL )
{
return false ;
}
if ( ! : : OpenClipboard ( hwnd ) ) //_pPublicInterface->getHSelf()))
if ( ! : : OpenClipboard ( hwnd ) )
{
: : GlobalFree ( hglbCopy ) ;
: : CloseClipboard ( ) ;
return false ;
: : EmptyClipboard ( ) ;
}
if ( ! : : EmptyClipboard ( ) )
{
: : GlobalFree ( hglbCopy ) ;
: : CloseClipboard ( ) ;
return false ;
}
// Lock the handle and copy the text to the buffer.
TCHAR * pStr = ( TCHAR * ) : : GlobalLock ( hglbCopy ) ;
lstrcpy ( pStr , str2cpy ) ;
if ( pStr = = NULL )
{
: : GlobalUnlock ( hglbCopy ) ;
: : GlobalFree ( hglbCopy ) ;
: : CloseClipboard ( ) ;
return false ;
}
_tcscpy_s ( pStr , len2Allocate / sizeof ( TCHAR ) , str2cpy . c_str ( ) ) ;
: : GlobalUnlock ( hglbCopy ) ;
// Place the handle on the clipboard.
: : SetClipboardData ( cilpboardFormat , hglbCopy ) ;
unsigned int clipBoardFormat = CF_UNICODETEXT ;
if ( : : SetClipboardData ( clipBoardFormat , hglbCopy ) = = NULL )
{
: : GlobalUnlock ( hglbCopy ) ;
: : GlobalFree ( hglbCopy ) ;
: : CloseClipboard ( ) ;
return false ;
}
if ( ! : : CloseClipboard ( ) )
{
return false ;
}
return true ;
}