jav*_*web 2 c++ windows clipboard winapi global-variables
我已经看到练习,如果你要从Windows剪贴板中获取内容,则首先在返回的句柄上调用GetClipboardData()该GlobalLock()函数GetClipboardData()- 在检索数据之前(例如转换和存储).
但是我发现(至少在C++ 11中)我可以在没有锁定的情况下得到相同的数据......
所以有3个子问题......
...导致一个大问题 - 使用或不使用GlobalLock() &&何时?
PS:当然,GlobalLock()你应该打电话给每个潜力GlobalUnlock()
这是我检索数据的简单部分:
HANDLE clipboardHandle;
string clipboardContents = "";
clipboardHandle = GetClipboardData( CF_OEMTEXT );
clipboardContents = (string)static_cast<char*>( clipboardHandle );
cout << "Clipboard data:" << clipboardContents; //prints out fine
Run Code Online (Sandbox Code Playgroud)
GlobalAlloc 可以返回两个不同的东西,具体取决于它的调用方式.
GlobalAlloc(GMEM_FIXED, n)返回一个指向不动的内存块的指针. GlobalLock是多余的:它将返回相同的值.
GlobalAlloc(GMEM_MOVEABLE, n)返回一个句柄,它不是指向数据的指针.您需要调用GlobalLock将其转换为指针,然后您将获得不同的值.
如果你不知道内存分配的方式是什么GlobalLock.
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |