文本到剪贴板

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 的教程编写了代码,而在该教程中不需要强制转换。