Artifact c65458ae7512b751a9d2f4794081b6fb9102805a:
0000: 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61 66 78 #include "stdafx
0010: 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 61 .h"..#include "a
0020: 70 70 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 pp.h"..#include
0030: 22 77 69 6e 75 74 69 6c 2e 68 22 0d 0a 75 73 69 "winutil.h"..usi
0040: 6e 67 20 6e 61 6d 65 73 70 61 63 65 20 6b 69 3b ng namespace ki;
0050: 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d ........//======
0060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
00a0: 3d 3d 3d 0d 0a 0d 0a 43 6c 69 70 62 6f 61 72 64 ===....Clipboard
00b0: 3a 3a 43 6c 69 70 62 6f 61 72 64 28 20 48 57 4e ::Clipboard( HWN
00c0: 44 20 6f 77 6e 65 72 2c 20 62 6f 6f 6c 20 72 65 D owner, bool re
00d0: 61 64 20 29 0d 0a 09 3a 20 6f 70 65 6e 65 64 5f ad )...: opened_
00e0: 28 20 66 61 6c 73 65 20 29 0d 0a 7b 0d 0a 09 69 ( false )..{...i
00f0: 66 28 20 3a 3a 4f 70 65 6e 43 6c 69 70 62 6f 61 f( ::OpenClipboa
0100: 72 64 28 6f 77 6e 65 72 29 20 29 0d 0a 09 09 69 rd(owner) )....i
0110: 66 28 20 72 65 61 64 20 7c 7c 20 3a 3a 45 6d 70 f( read || ::Emp
0120: 74 79 43 6c 69 70 62 6f 61 72 64 28 29 20 29 0d tyClipboard() ).
0130: 0a 09 09 09 6f 70 65 6e 65 64 5f 20 3d 20 74 72 ....opened_ = tr
0140: 75 65 3b 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 09 ue;....else.....
0150: 3a 3a 43 6c 6f 73 65 43 6c 69 70 62 6f 61 72 64 ::CloseClipboard
0160: 28 29 3b 0d 0a 7d 0d 0a 0d 0a 43 6c 69 70 62 6f ();..}....Clipbo
0170: 61 72 64 3a 3a 7e 43 6c 69 70 62 6f 61 72 64 28 ard::~Clipboard(
0180: 29 0d 0a 7b 0d 0a 09 69 66 28 20 6f 70 65 6e 65 )..{...if( opene
0190: 64 5f 20 29 0d 0a 09 09 3a 3a 43 6c 6f 73 65 43 d_ )....::CloseC
01a0: 6c 69 70 62 6f 61 72 64 28 29 3b 0d 0a 7d 0d 0a lipboard();..}..
01b0: 0d 0a 43 6c 69 70 62 6f 61 72 64 3a 3a 54 65 78 ..Clipboard::Tex
01c0: 74 20 43 6c 69 70 62 6f 61 72 64 3a 3a 47 65 74 t Clipboard::Get
01d0: 55 6e 69 63 6f 64 65 54 65 78 74 28 29 20 63 6f UnicodeText() co
01e0: 6e 73 74 0d 0a 7b 0d 0a 09 69 66 28 20 61 70 70 nst..{...if( app
01f0: 28 29 2e 69 73 4e 54 28 29 20 29 0d 0a 09 7b 0d ().isNT() )...{.
0200: 0a 09 09 2f 2f 20 4e 54 82 c8 82 e7 92 bc 90 da ...// NT........
0210: 55 6e 69 63 6f 64 65 82 c5 82 c6 82 ea 82 e9 0d Unicode.........
0220: 0a 09 09 48 41 4e 44 4c 45 20 68 20 3d 20 47 65 ...HANDLE h = Ge
0230: 74 44 61 74 61 28 20 43 46 5f 55 4e 49 43 4f 44 tData( CF_UNICOD
0240: 45 54 45 58 54 20 29 3b 0d 0a 09 09 69 66 28 20 ETEXT );....if(
0250: 68 20 21 3d 20 4e 55 4c 4c 20 29 0d 0a 09 09 7b h != NULL )....{
0260: 0d 0a 09 09 09 75 6e 69 63 6f 64 65 2a 20 75 73 .....unicode* us
0270: 74 72 20 3d 20 73 74 61 74 69 63 5f 63 61 73 74 tr = static_cast
0280: 3c 75 6e 69 63 6f 64 65 2a 3e 28 20 3a 3a 47 6c <unicode*>( ::Gl
0290: 6f 62 61 6c 4c 6f 63 6b 28 20 68 20 29 20 29 3b obalLock( h ) );
02a0: 0d 0a 09 09 09 72 65 74 75 72 6e 20 54 65 78 74 .....return Text
02b0: 28 20 75 73 74 72 2c 20 54 65 78 74 3a 3a 47 41 ( ustr, Text::GA
02c0: 4c 4c 4f 43 20 29 3b 0d 0a 09 09 7d 0d 0a 09 7d LLOC );....}...}
02d0: 0d 0a 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 2f ...else...{..../
02e0: 2f 20 39 78 82 c8 82 e7 95 cf 8a b7 82 aa 95 4b / 9x...........K
02f0: 97 76 0d 0a 09 09 48 41 4e 44 4c 45 20 68 20 3d .v....HANDLE h =
0300: 20 47 65 74 44 61 74 61 28 20 43 46 5f 54 45 58 GetData( CF_TEX
0310: 54 20 29 3b 0d 0a 09 09 69 66 28 20 68 20 21 3d T );....if( h !=
0320: 20 4e 55 4c 4c 20 29 0d 0a 09 09 7b 0d 0a 09 09 NULL )....{....
0330: 09 63 68 61 72 2a 20 63 73 74 72 20 3d 20 73 74 .char* cstr = st
0340: 61 74 69 63 5f 63 61 73 74 3c 63 68 61 72 2a 3e atic_cast<char*>
0350: 28 20 3a 3a 47 6c 6f 62 61 6c 4c 6f 63 6b 28 20 ( ::GlobalLock(
0360: 68 20 29 20 29 3b 0d 0a 09 09 09 69 6e 74 20 4c h ) );.....int L
0370: 75 20 3d 20 3a 3a 6c 73 74 72 6c 65 6e 41 28 20 u = ::lstrlenA(
0380: 63 73 74 72 20 29 20 2a 20 33 3b 0d 0a 09 09 09 cstr ) * 3;.....
0390: 75 6e 69 63 6f 64 65 2a 20 75 73 74 72 20 3d 20 unicode* ustr =
03a0: 6e 65 77 20 75 6e 69 63 6f 64 65 5b 4c 75 5d 3b new unicode[Lu];
03b0: 0d 0a 09 09 09 3a 3a 4d 75 6c 74 69 42 79 74 65 .....::MultiByte
03c0: 54 6f 57 69 64 65 43 68 61 72 28 20 43 50 5f 41 ToWideChar( CP_A
03d0: 43 50 2c 20 30 2c 20 63 73 74 72 2c 20 2d 31 2c CP, 0, cstr, -1,
03e0: 20 75 73 74 72 2c 20 4c 75 20 29 3b 0d 0a 09 09 ustr, Lu );....
03f0: 09 3a 3a 47 6c 6f 62 61 6c 55 6e 6c 6f 63 6b 28 .::GlobalUnlock(
0400: 20 68 20 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e h );.....return
0410: 20 54 65 78 74 28 20 75 73 74 72 2c 20 54 65 78 Text( ustr, Tex
0420: 74 3a 3a 4e 45 57 20 29 3b 0d 0a 09 09 7d 0d 0a t::NEW );....}..
0430: 09 7d 0d 0a 0d 0a 09 72 65 74 75 72 6e 20 54 65 .}.....return Te
0440: 78 74 28 20 4e 55 4c 4c 2c 20 54 65 78 74 3a 3a xt( NULL, Text::
0450: 4e 45 57 20 29 3b 0d 0a 7d 0d 0a NEW );..}..