在Win32中为了将数据粘贴到剪贴板我必须拨打GlobalAlloc()
,然后GlobalLock()
获取一个指针,然后复制数据,然后调用GlobalUnlock()
和SetClipboardData()
。如果我调用GlobalLock()然后调用GlobalUnlock()会发生什么?
如果代码是C++的例外可能调用之间掀翻GlobalLock()
和GlobalUnlock()
,如果我不带这个GlobalUnlock()
照顾不会被调用。
这是一个问题吗?如果我拨打GlobalLock()
并出于任何原因跳过配对GlobalUnlock()
电话会发生什么情况?
不可以,如果数据粘贴到剪贴板,则不应调用GlobalFree() - 将所有权传递给剪贴板,并且稍后将释放内存。 – sharptooth 2010-01-29 10:13:18
是的你是对的,如果SetClipboardData的调用已经成功。但除此之外,你必须调用两者。后相应修改。 – 2010-01-29 10:20:13