プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

クリップボードの基本関数(まとめ)

2010年02月17日 10時16分00秒 | 便利ライブラリ関数

クリップボードの基本関数をまとめただけです。
関数名をクリックすると各記事にジャンプ移動します。(戻る)

ヘッダ・ファイル - funcClipBoard.h

//------------------------------------------------------------------------------
// 文字列バッファの基本操作
//------------------------------------------------------------------------------
#ifndef __FUNCCLIPBOARD_INCLUDE__
#define __FUNCCLIPBOARD_INCLUDE__

//------------------------------------------------
// 関数のプロトタイプ宣言
//------------------------------------------------
extern   BOOL funcClipClear( HWND hWnd );
extern   BOOL funcClipRead(  HWND hWnd, LPTSTR lpBuff, DWORD dwSize );
extern   BOOL funcClipWrite( HWND hWnd, LPCTSTR lpBuff, DWORD dwSize );
extern LPTSTR funcClipGets( HWND hWnd );
extern   BOOL funcClipPuts( HWND hWnd, LPCTSTR lpString );
extern   BOOL funcClipPutf( HWND hWnd, LPCTSTR lpFormat, ... );

#endif
//------------------------------------------------------------------------------
// End of funcClipBoard.h
//------------------------------------------------------------------------------

ソース・ファイル - funcClipBoard.cpp

//------------------------------------------------------------------------------
// クリップボード操作の基本関数
//------------------------------------------------------------------------------
#include <stdarg.h>
#include <Windows.h>
#include "funcString.h"
#include "funcClipBoard.h"

//------------------------------------------------
// クリップボードのデータをクリア
//------------------------------------------------
extern BOOL funcClipClear( HWND hWnd )
{
    if ( OpenClipboard(hWnd) ){
        EmptyClipboard();
        CloseClipboard();
        return TRUE;
    }
    return FALSE;
}

//------------------------------------------------
// クリップボードからテキストを読み込む
//------------------------------------------------
extern BOOL funcClipRead( HWND hWnd, LPTSTR lpBuff, DWORD dwSize )
{
    HGLOBAL     hMem;
    LPCTSTR     lpClip;
    
    if ( OpenClipboard(hWnd) ){
        if ( (hMem = GetClipboardData(CF_CLIPTEXT)) != NULL ){
            if ( (lpClip = (LPCTSTR)GlobalLock(hMem)) != NULL ){
                if ( lstrlen(lpClip) == 0 ){
                    funcZeroString( lpBuff, dwSize );
                }
                else{
                    funcCopyString( lpBuff, dwSize, lpClip );
                }
                GlobalUnlock( hMem );
                CloseClipboard();
                return TRUE;
            }
        }
        CloseClipboard();
    }
    return FALSE;
}

//------------------------------------------------
// クリップボードにテキストを書き込む
//------------------------------------------------
extern BOOL funcClipWrite( HWND hWnd, LPCTSTR lpBuff, DWORD dwSize )
{
    HGLOBAL     hMem;
    LPTSTR      lpClip;
    DWORD       dwByte;
    
    // 文字数からバイト数に変換
    dwByte  = dwSize;
    dwByte *= sizeof(TCHAR);
    dwByte += sizeof(TCHAR);
    
    if ( (hMem = GlobalAlloc((GHND|GMEM_SHARE),dwByte)) != NULL ){
        if ( (lpClip = (LPTSTR)GlobalLock(hMem)) != NULL ){
            funcCopyString( lpClip, (dwSize + 1), lpBuff );
            GlobalUnlock( hMem );
            
            // クリップボードにコピー
            if ( OpenClipboard(hWnd) ){
                EmptyClipboard();
                SetClipboardData( CF_CLIPTEXT, hMem );
                CloseClipboard();
                return TRUE;
            }
        }
        GlobalFree( hMem );
    }
    return FALSE;
}

//------------------------------------------------
// クリップボードの文字列を複製取得
//------------------------------------------------
extern LPTSTR funcClipGets( HWND hWnd )
{
    LPTSTR      lpBuff = NULL;
    LPTSTR      lpClip;
    HGLOBAL     hMem;
    
    if ( OpenClipboard(hWnd) ){
        if ( (hMem = GetClipboardData(CF_CLIPTEXT)) != NULL ){
            if ( (lpClip = (LPTSTR)GlobalLock(hMem)) != NULL ){
                lpBuff = funcDupString( lpClip, lstrlen(lpClip) );
                GlobalUnlock( hMem );
            }
        }
        CloseClipboard();
    }
    return lpBuff;
}

//------------------------------------------------
// クリップボードに文字列を出力
//------------------------------------------------
extern BOOL funcClipPuts( HWND hWnd, LPCTSTR lpString )
{
    return funcClipWrite( hWnd, lpString, lstrlen(lpString) );
}

//------------------------------------------------
// クリップボードに書式列を出力
//------------------------------------------------
extern BOOL funcClipPutf( HWND hWnd, LPCTSTR lpFormat, ... )
{
    TCHAR       szBuff[ 2048 ];
    DWORD       dwSize;
    va_list     argp;
    
    va_start( argp, lpFormat );
    dwSize = wvsprintf( szBuff, lpFormat, argp );
    va_end( argp );
    return funcClipWrite( hWnd, szBuff, dwSize );
}

//------------------------------------------------------------------------------
// End of funcClipBoard.cpp
//------------------------------------------------------------------------------

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 文字列バッファの改行コード... | トップ | 文字列バッファの基本関数(ま... »
最新の画像もっと見る

コメントを投稿

便利ライブラリ関数」カテゴリの最新記事