File Annotation

Not logged in
dcdd144598 2011-02-23        kinaba: #include "stdafx.h"
dcdd144598 2011-02-23        kinaba: #include "app.h"
dcdd144598 2011-02-23        kinaba: #include "winutil.h"
dcdd144598 2011-02-23        kinaba: using namespace ki;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: Clipboard::Clipboard( HWND owner, bool read )
dcdd144598 2011-02-23        kinaba: 	: opened_( false )
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	if( ::OpenClipboard(owner) )
dcdd144598 2011-02-23        kinaba: 		if( read || ::EmptyClipboard() )
dcdd144598 2011-02-23        kinaba: 			opened_ = true;
dcdd144598 2011-02-23        kinaba: 		else
dcdd144598 2011-02-23        kinaba: 			::CloseClipboard();
dcdd144598 2011-02-23        kinaba: }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: Clipboard::~Clipboard()
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	if( opened_ )
dcdd144598 2011-02-23        kinaba: 		::CloseClipboard();
dcdd144598 2011-02-23        kinaba: }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: Clipboard::Text Clipboard::GetUnicodeText() const
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: 	if( app().isNT() )
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		// NTなら直接Unicodeでとれる
dcdd144598 2011-02-23        kinaba: 		HANDLE h = GetData( CF_UNICODETEXT );
dcdd144598 2011-02-23        kinaba: 		if( h != NULL )
dcdd144598 2011-02-23        kinaba: 		{
dcdd144598 2011-02-23        kinaba: 			unicode* ustr = static_cast<unicode*>( ::GlobalLock( h ) );
dcdd144598 2011-02-23        kinaba: 			return Text( ustr, Text::GALLOC );
dcdd144598 2011-02-23        kinaba: 		}
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: 	else
dcdd144598 2011-02-23        kinaba: 	{
dcdd144598 2011-02-23        kinaba: 		// 9xなら変換が必要
dcdd144598 2011-02-23        kinaba: 		HANDLE h = GetData( CF_TEXT );
dcdd144598 2011-02-23        kinaba: 		if( h != NULL )
dcdd144598 2011-02-23        kinaba: 		{
dcdd144598 2011-02-23        kinaba: 			char* cstr = static_cast<char*>( ::GlobalLock( h ) );
dcdd144598 2011-02-23        kinaba: 			int Lu = ::lstrlenA( cstr ) * 3;
dcdd144598 2011-02-23        kinaba: 			unicode* ustr = new unicode[Lu];
dcdd144598 2011-02-23        kinaba: 			::MultiByteToWideChar( CP_ACP, 0, cstr, -1, ustr, Lu );
dcdd144598 2011-02-23        kinaba: 			::GlobalUnlock( h );
dcdd144598 2011-02-23        kinaba: 			return Text( ustr, Text::NEW );
dcdd144598 2011-02-23        kinaba: 		}
dcdd144598 2011-02-23        kinaba: 	}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	return Text( NULL, Text::NEW );
dcdd144598 2011-02-23        kinaba: }