首页 > 解决方案 > 文本到剪贴板

问题描述

我想将文本放到剪贴板,我的代码:

#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 行)

如何解决这个问题?

标签: c++windowsclipboard

解决方案


GlobalLock不返回 a char*,而是返回 a LPVOID(这只是 atypedef的 a void*)。只需像这样转换结果:

char *p = (char*) GlobalLock(h);

它有效,至少它对我有用。您可能使用 C 教程编写了代码,而无需进行强制转换。


推荐阅读