| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1750 人关注过本帖
标题:windows复制粘贴的代码
取消只看楼主 加入收藏
xyzdwf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:10
注 册:2017-1-9
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:5 
windows复制粘贴的代码
复制可以,粘贴还没测试。有没有什么问题?
程序代码:
void gui_gdiplus_copy(wchar_t* str, int len)
{
    if(!str || len<1 || !OpenClipboard(NULL))return;

    HGLOBAL mem = (HGLOBAL)GlobalAlloc(GMEM_MOVEABLE, (len + 1) * sizeof(wchar_t));
    if(!mem) {
        CloseClipboard();
        return;
    }

    wchar_t* wstr = (wchar_t*)GlobalLock(mem);
    if(!wstr) {
        GlobalFree(mem);
        CloseClipboard();
        return;
    }

    wcsncpy(wstr, str, len);
    wstr[len] = 0;
    GlobalUnlock(mem);
    if (!SetClipboardData(CF_UNICODETEXT, mem))
        GlobalFree(mem);
    CloseClipboard();
}

void gui_gdiplus_paste(wchar_t* str, int len)
{
    if(len<1)return;
    if(!IsClipboardFormatAvailable(CF_UNICODETEXT) && OpenClipboard(NULL))
        return;
        
    HGLOBAL mem;
    size_t size;
    wchar_t* wstr;

    mem = (HGLOBAL)GetClipboardData(CF_UNICODETEXT);
    if (!mem) {
        CloseClipboard();
        return;
    }

    size = GlobalSize(mem) - 1;
    if (!size) {
        CloseClipboard();
        return;
    }

    wstr = (wchar_t*)GlobalLock(mem);
    if (!wstr) {
        CloseClipboard();
        return;
    }
    
    wcsncpy(str, wstr, len<size?len:size);

    GlobalUnlock(mem);
    CloseClipboard();
}
搜索更多相关主题的帖子: 复制 str size windows return 
2021-09-26 18:44
xyzdwf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:10
注 册:2017-1-9
收藏
得分:0 
回复 2楼 rjsp
感谢版主大哥回复,sizeof(tmp)/sizeof(*tmp) 是不是要比字符串函数wcslen循环获取长度高效,一个除法就能搞定太牛了
但是为什么要用memcpy没明白
2021-09-27 10:48
xyzdwf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:10
注 册:2017-1-9
收藏
得分:0 
回复 6楼 rjsp
讲的很明白,我再试试
2021-09-27 14:53
xyzdwf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:10
注 册:2017-1-9
收藏
得分:0 
回复 5楼 rjsp
已测试过的
程序代码:
void gui_gdiplus_paste(wchar_t* str, int len)
{
    if(len<1)return;
    if(!IsClipboardFormatAvailable(CF_UNICODETEXT) || !OpenClipboard(NULL))
        return;
        
    HGLOBAL mem;
    size_t size;
    wchar_t* wstr;

    mem = (HGLOBAL)GetClipboardData(CF_UNICODETEXT);
    if (!mem) {
        CloseClipboard();
        return;
    }

    size = GlobalSize(mem);
    if (!size) {
        CloseClipboard();
        return;
    }
    
    size /= sizeof(wchar_t);
    size--;
    
    wstr = (wchar_t*)GlobalLock(mem);
    if (!wstr) {
        CloseClipboard();
        return;
    }
    
    int rlen = len<size?len:size;
    wcsncpy(str, wstr, rlen);
    str[rlen] = 0;

    GlobalUnlock(mem);
    CloseClipboard();
}



[此贴子已经被作者于2021-10-1 12:52编辑过]

2021-09-27 17:32
xyzdwf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:10
注 册:2017-1-9
收藏
得分:0 
回复 3楼 自由而无用
最近又想用cairo(https://)来绘制ui,有人说性能不好,你用过没,性能怎么样?有没有什么坑?
Recently also want to use cairo to draw ui, some people say performance is not good, you have used not, performance how there is no pit
2021-09-27 17:35
xyzdwf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:10
注 册:2017-1-9
收藏
得分:0 
回复 10楼 自由而无用
谢了,正好msys2中有cairo的库,有时间我去试试才知深浅,网上的片面之词不可信
Thanks, just ‘msys2’ has cairo library, there is time for me to try to know the depth, the one-sided words on the Internet is not credible
2021-09-27 17:52
快速回复:windows复制粘贴的代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030661 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved