文本到剪贴板
Text to clipboard
我想将文本放入剪贴板,我的代码:
#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
不是 return 一个 char*
,而是 return 一个 LPVOID
(这只是一个 typedef
void*
)。像这样投射结果:
char *p = (char*) GlobalLock(h);
它有效,至少对我有效。您可能使用 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
不是 return 一个 char*
,而是 return 一个 LPVOID
(这只是一个 typedef
void*
)。像这样投射结果:
char *p = (char*) GlobalLock(h);
它有效,至少对我有效。您可能使用 C 的教程编写了代码,而在该教程中不需要强制转换。