1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
static bool CopyTextToClipboard( HWND hWindow_i,
        LPCTSTR lpctszText_i )
{
    // Open clipboard
    if ( !lpctszText_i !::OpenClipboard( hWindow_i ))
    {
        return false;
    }
 
    // Clear clipboard
    EmptyClipboard();
 
    const int nTotalAllocLen = ( _tcslen( lpctszText_i ) + 1 )
            * sizeof( TCHAR ) ;
    HGLOBAL hGlobal = GlobalAlloc( GMEM_MOVEABLE, nTotalAllocLen );
    if ( !hGlobal )
    {
        CloseClipboard();
        return false;
    }
 
    // Lock allocated buffer for copying
    LPTSTR lptszCopyStr = RCAST( LPTSTR, GlobalLock( hGlobal ));
    memcpy( lptszCopyStr, lpctszText_i, nTotalAllocLen );
    GlobalUnlock( hGlobal );
    ASSERT( GetLastError() == NO_ERROR );
 
    // Clipboard format
    UINT uClipBoardFormat = 0;
    #ifdef _UNICODE
    uClipBoardFormat = CF_UNICODETEXT;
    #else
    uClipBoardFormat = CF_TEXT;
    #endif
 
    // Set data to clipboard
    HANDLE hClip = SetClipboardData( uClipBoardFormat, hGlobal );
    CloseClipboard();
 
    // Return status
    return ( hClip ? true : false );
} // End CopyTextToClipboard
2008/02/12 20:13 2008/02/12 20:13

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요