• UNICODE编码下setclipbdata


    搞了好久,要么setclipboarddata中断,要么只能复制第一个字母。

    只能复制首字母是因为UNICODE下CString强制转换wchar_t*不行。
    setclipboarddata中断是因为wcscpy_s拷贝字符串到内存地址的rsize_t不对。
    如下是OK的代码:
    if (OpenClipboard()){
    CString temp;
    GetDlgItemText(IDC_EDIT1, temp);
    EmptyClipboard();
    HGLOBAL hmem=NULL;
    hmem = GlobalAlloc(GHND, (1+temp.GetLength())*sizeof(CString));
    wchar_t *lps;
    lps= (wchar_t *)GlobalLock(hmem);
    wchar_t *tempc;
    tempc = temp.GetBuffer(0);
    temp.ReleaseBuffer();
    wcscpy_s(lps, (wcslen(tempc)+1)*sizeof(wchar_t), tempc);
    GlobalUnlock(hmem);
    SetClipboardData(CF_UNICODETEXT, hmem);
    DWORD dw=GetLastError();
    CloseClipboard();
    MessageBox(L"复制成功");
  • 相关阅读:
    p1297
    p2023
    p1612
    逆元总结
    p1652
    考试总结10-08
    p1459
    p1821
    p1863
    p1884
  • 原文地址:https://www.cnblogs.com/swek/p/4337987.html
Copyright © 2020-2023  润新知