class LboxDlg : public LboxWin


  ListCopyClipboard



  
// *********************************************************
// クリップボードにコピー
// 行の終わりには、改行コードを付加
// bSelect が true の場合は 選択した行のみコピーする
// 戻り値 : true 成功, false 失敗
// *********************************************************
BOOL LboxDlg::ListCopyClipboard( int nID, BOOL bSelect )
{
	return LboxListCopyClipboard(
		GetDlgItem( LboxDlg::hDlg, nID ),
		bSelect
	);
}
  

  
// *********************************************************
// クリップボードにコピー
// 行の終わりには、改行コードを付加
// bSelect が true の場合は 選択した行のみコピーする
// 戻り値 : true 成功, false 失敗
// *********************************************************
BOOL LboxListCopyClipboard( HWND hWnd, BOOL bSelect )
{
	DWORD nSize;
	int nRows,i;
	BOOL bFlg;

	nSize = 0;
	nRows = LboxListCount( hWnd );
	for( i = 0; i < nRows; i++ ) {
		if ( bSelect ) {
			bFlg = (BOOL)SendMessage(
				hWnd,
				LB_GETSEL,
				(WPARAM)i,
				0L
			);
			if ( !bFlg ) {
				continue;
			}
		}
		nSize += (DWORD)SendMessage(
			hWnd,
			LB_GETTEXTLEN,
			(WPARAM)i,
			0L
		);
		nSize++;
	}

	HGLOBAL hGlobal;
	LPTSTR pMem;

	hGlobal = GlobalAlloc(GHND, nSize + 128 );
	if ( hGlobal == NULL ) {
		return false;
	}
	pMem = (LPTSTR)GlobalLock( hGlobal );
	if ( pMem == NULL ) {
		GlobalFree( hGlobal );
		return false;
	}
	
	*pMem = 0x00;

	for( i = 0; i < nRows; i++ ) {
		if ( bSelect ) {
			bFlg = (BOOL)SendMessage(
				hWnd,
				LB_GETSEL,
				(WPARAM)i,
				0L
			);
			if ( !bFlg ) {
				continue;
			}
		}
		SendMessage(
			hWnd,
			LB_GETTEXT,
			(WPARAM)i,
			(LPARAM)(LPCTSTR)pMem
		);
		lstrcat( pMem, "\n" );
		pMem = pMem + lstrlen( pMem );
	}

	GlobalUnlock( hGlobal );
	OpenClipboard( NULL );
	EmptyClipboard();
	SetClipboardData(CF_TEXT, hGlobal);
	CloseClipboard();

	return true;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ