クリップボードと文字列
Posted: 2005年7月19日(火) 00:40
コード: 全て選択
Dim X As String
X="A"
OpenClipboard(0)
EmptyClipboard()
SetClipboardData(CF_TEXT,VarPtr(X))
CloseClipboard()
コード: 全て選択
Dim X As String
X="A"
OpenClipboard(0)
EmptyClipboard()
SetClipboardData(CF_TEXT,VarPtr(X))
CloseClipboard()
コード: 全て選択
Dim X As String
Dim retAns As Long
X="A"
retAns = WsSetClipStr( StrPtr( X ) )
End
'クリップボードに文字列を貼り付ける。
Function WsSetClipStr( pBuffer As BytePtr ) As Long
Dim nSize As Long
Dim hGlobalMem As DWord
Dim pGlobalMemForClipText As BytePtr
'クリップボードを開く
While ( OpenClipboard(0)=FALSE )
Sleep (1)
Wend
'クリップボードを空にする。
EmptyClipboard()
'貼り付ける文字列の大きさを得て、クリップボード用のバッファを確保
nSize = lstrlen( pBuffer )
hGlobalMem = GlobalAlloc( GHND Or GMEM_SHARE, nSize + 1 )
pGlobalMemForClipText = GlobalLock(hGlobalMem)
pGlobalMemForClipText = lstrcpy( pGlobalMemForClipText, pBuffer )
GlobalUnlock( hGlobalMem )
SetClipboardData( CF_TEXT, hGlobalMem )
'クリップボードを閉じる
CloseClipboard()
WsSetClipStr = TRUE
EndFunction
コード: 全て選択
コード: 全て選択
hGlobalMem = GlobalAlloc( GHND Or GMEM_SHARE, nSize + 1 )
コード: 全て選択
Dim hDC As Long
Dim hBmp As Long
Dim hOrgDC As Long
hOrgDC=GetDC(0)
hDC=CreateCompatibleDC(hOrgDC)
hBmp=CreateCompatibleBitmap(hOrgDC,100,100)
SelectObject(hDC,hBmp)
ReleaseDC(0,hOrgDC)
'---描画処理---
OpenClipboard(0)
EmptyClipboard()
SetClipboardData(CF_BITMAP,hBmp)
CloseClipboard()
DeleteDC(hDC)
DeleteObject(hBmp)
だそうです。spi_system.sbp 内で定義されています。GMEM_SHARE
ダイナミックデータエクスチェンジ (DDE) 対話のためにDDE 関数が使用するメモリを確保します。Windows 3.x とは異なり、このメモリはグローバルには共有されませんが互換性のために使用できます。
という記事(投稿者hiraさん)がありましたね。このときはこれに対するレスはありませんでしたが、詳しい方いらっしゃいましたら、ぜひお願いします。最終行の「DeleteObject」なのですが、使用した方が良いのでしょうか?
私は、クリップボードの内容であり共有であるため削除してはいけないのでは?と思うのですが、この行を実行してもクリップボードの内容は消えません。
しかもDeleteObjectの戻り値が1になっているようです。
> という記事(投稿者hiraさん)がありましたね。このときはこれに対するレスはありませんでしたが、詳しい方いらっしゃいましたら、ぜひお願いします。> 最終行の「DeleteObject」なのですが、使用した方が良いのでしょうか?
> 私は、クリップボードの内容であり共有であるため削除してはいけないのでは?と思うのですが、この行を実行してもクリップボードの内容は消えません。
> しかもDeleteObjectの戻り値が1になっているようです。
>