剪贴簿(六)

2010-12-30 21:14:24 · 作者: · 浏览: 20178
lobalLock (hGlobal) ;

将字串复制到记忆体块中:

for (i = 0 ; i < wLength ; i++)
*pGlobal++ = *pString++ ;

由於GlobalAlloc的GHND旗标已使整个记忆体块在配置期间被清除为零,所以不需要增加结尾的NULL 。以下叙述为记忆体块解锁:

GlobalUnlock (hGlobal) ;

现在就有了表示以NULL结尾的文字所在记忆体块的记忆体代号。为了把它送到剪贴簿中,打开剪贴簿并把它清空:

OpenClipboard (hwnd) ;
EmptyClipboard () ;

利用CF_TEXT识别字把记忆体代号交给剪贴簿,关闭剪贴簿:

SetClipboardData (CF_TEXT, hGlobal) ;
CloseClipboard () ;

工作告一段落。

下面是关於此过程的一些规则:

从剪贴簿上取得文字
 

从剪贴簿上取得文字只比把文字传送到剪贴簿上稍微复杂一些。您必须首先确定剪贴簿是否含有CF_TEXT格式的资料,最简单的方法是呼叫

bAvailable = IsClipboardFormatAvailable (CF_TEXT) ;

如果剪贴簿上含有CF_TEXT资料,这个函式将传回TRUE(非零)。我们在第十章的POPPAD2程式中已使用了这个函式,用它来确定「Edit」功能表中「Paste」项是被启用还是被停用的。IsClipboardFormatAvailable是少数几个不需先打开剪贴簿就可以使用的剪贴簿函式之一。但是,如果您之後想再打开剪贴簿以取得这个文字,就应该