c++ - 文本到剪贴板
问题描述
我想将文本放到剪贴板,我的代码:
#include <windows.h>
void copier_dans_presse_papier(const char *s)
{
if(OpenClipboard(NULL))
{
HGLOBAL h;
EmptyClipboard();
h = GlobalAlloc(GHND, strlen(s) + 1);
if(h)
{
char *p = GlobalLock(h); /* line 13 */
if(p)
{
strcpy(p, s);
GlobalUnlock(h);
SetClipboardData(CF_TEXT, h);
}
GlobalFree(h);
}
CloseClipboard();
}
}
int main(void)
{
copier_dans_presse_papier("Hello World !");
return 0;
}
我在编译时遇到此错误:[错误] 从 'LPVOID {aka void*}' 到 'char*' 的无效转换 [-fpermissive]
(第 13 行)
如何解决这个问题?
解决方案
GlobalLock
不返回 a char*
,而是返回 a LPVOID
(这只是 atypedef
的 a void*
)。只需像这样转换结果:
char *p = (char*) GlobalLock(h);
它有效,至少它对我有用。您可能使用 C 教程编写了代码,而无需进行强制转换。
推荐阅读
- c++ - MaxDoubleSliceSum - 代码性
- html - 隐藏滚动箭头 - 更好的方法?
- .htaccess - robots.txt 文件在 localhost 中工作,但在 php 中的服务器上失败
- angular - 结构指令中的角度输入绑定
- python - OpenCV人脸识别太慢
- python - Gstreamer OpenCV 接收帧的延迟
- reactjs - 如何在 React 中卸载现有的嚎叫?
- sql - 将条件附加到 where 子句(pl/sql),其中条件作为输入 varchar2
- python - 当宽度<1.0 时 Matplotlib 每周条太细,宽度>=1.0 时太粗
- sql - 如何根据 BigQuery 中的最新日期为每个客户返回一行?