MFC应用实例:[63]粘贴板复制数据

 时间:2026-02-14 13:02:32

1、新建一个基于对话框的应用程序,工程名为ClipBoardDemo。

MFC应用实例:[63]粘贴板复制数据

2、界面设计如下,添加两个个按钮,两个列表框,两个文本控件。

MFC应用实例:[63]粘贴板复制数据

3、对“复制到剪切板”按钮添加响应函数OnCopy() ,响应函数OnCopy() 代码如下:

void CClipBoardDemoDlg::OnCopy() 

{

COleDataSource* pSource=new COleDataSource();

CSharedFile sf(GMEM_MOVEABLE|GMEM_DDESHARE|GMEM_ZEROINIT);

char* strText;

strText=new char[40];//存储从文件读取的数据

for(int i=0;i<m_booklist.GetCount();i++)

{

m_booklist.GetText(i,strText);//获取列表框数据

sf.Seek(40*i,CFile::begin);//定位文件指针

sf.Write(strText,40);//写文件数据

}

HGLOBAL hMem=sf.Detach();

if(!hMem)

return;

pSource->CacheGlobalData(CF_TEXT,hMem);

pSource->SetClipboard();//添加到剪切板中

}

MFC应用实例:[63]粘贴板复制数据

4、对“从剪切板粘贴数据”按钮添加响应函数OnPlaste() ,响应函数OnPlaste() 代码如下:

void CClipBoardDemoDlg::OnPlaste() 

{

COleDataObject obj;

if(obj.AttachClipboard())

{

if(obj.IsDataAvailable(CF_TEXT))

{

HGLOBAL hmem=obj.GetGlobalData(CF_TEXT);

CMemFile mf((BYTE*)::GlobalLock(hmem),::GlobalSize(hmem));

char* strText;

strText=new char[40];//存储从文件读取的数据

int i=0;

mf.SeekToBegin();

while(mf.Read(strText,40)!=0)//读出的文件不为空

{

if((CString)strText=="")

return;

m_booklist2.AddString((CString)strText);

i++;

mf.Seek(40*i,CFile::begin);//定位文件指针

}

::GlobalUnlock(hmem);

}

}

}

MFC应用实例:[63]粘贴板复制数据

5、程序运行如下:

MFC应用实例:[63]粘贴板复制数据

  • windows10如何防范注册表攻击?
  • dll文件如何删除
  • Windows的回忆:[2]虚拟机Win95
  • winform中获取路径
  • phpstudy如何更改post最大可传输的数据大小
  • 热门搜索
    大理丽江旅游 甘南旅游 iphone怎么设置手机铃声 罗平旅游攻略 乌镇旅游攻略一日游 杭州旅游必去景点 打篮球怎么过人 潮宏基怎么样 柳体的特点 周口旅游