Word 上可以粘贴 AutoCAD 图纸的复制信息,
如何不让其复制到Word上?
如何获取剪贴板信息?
如何不让其复制到Word上?
如何获取剪贴板信息?
解决方案 »
- 泥马拿MapX来做GIS的TX伤不起啊伤不起!!!!!!
- 使用IDispachEx接口向window的成员赋值返回成员未找到
- 在一个unicode dll( COM)中,循环中使用CreateFile创建打开文件,当到6500次左右时候,程序直接退出,没有任何提示
- CEdit输入字符颜色
- 对文档视图模型的理解,请问各位是否正确?分不够了,以后再补!!
- 菜鸟问题-List显示方式,急啊! 谢谢!
- 关于ActiveX\RealPlayer2.0的播放模式
- 频率域滤波处理
- 有关Bitmap绘制问题!望高手赐教!
- 基于对话框的应用程序,初始生成的对话框可否隐藏?(不在任务条显示)
- 对于一个链表类,如何做序列化存取。是不是存表头,再读出表头即可
- 已知一个PHP网页的地址,如何将其页面内容读出来
假如
word_***
autocad_***
给你一段代码
UINT m_cfDraw=RegisterClipboardFormat("word_***");
COleDataObject dataObject;
//连接剪贴板dataObject.AttachClipboard();
if (dataObject.IsDataAvailable(m_cfDraw)) //判断指定的格式是否存在
{}
CString source;
//put your text in source
if(OpenClipboard())
{
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source));
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT,clipbuffer);
CloseClipboard();
}从剪接板上获取文本:
char * buffer;
if(OpenClipboard())
{
buffer = (char*)GetClipboardData(CF_TEXT);
//do something with buffer here
//before it goes out of scope
}
CloseClipboard();
dataObject.AttachClipboard();
CF_TEXT为文本数据格式,也可以是图形数据格式或其它定义的数据格式,
返回值为剪的板数据的内存控制句柄,如果为NULL表示地址无效。
CString fromClipboard;
if ( OpenClipboard() ) //打开剪贴板
{
HANDLE hData = GetClipboardData(CF_TEXT);
char * buffer = (char*)GlobalLock(hData);
fromClipboard = buffer;
GlobalUnlock(hData);
CloseClipboard();
m_List.AddString(buffer);
}
CDC* pDC = GetDC();//获得DC
OnPrepareDC(pDC);//设置DC的滚动属性,与ScollView的滚动有关UINT m_cfDraw=RegisterClipboardFormat("Draw_zgj");
CBase *m_usrCurrentObject;
CGraphDoc* pDoc = GetDocument();
COleDataObject dataObject;
//连接剪贴板dataObject.AttachClipboard();
if (dataObject.IsDataAvailable(m_cfDraw)) //判断指定的格式是否存在
{
//得到内存文件指针
CFile* pFile = dataObject.GetFileData(m_cfDraw);
if (pFile != NULL)
{
//建立用于读取的文档对象
CArchive ar(pFile, CArchive::load);
TRY
{
//针对ar,调用对象的序列化函数。
pDoc->m_CopyaObjects.Serialize(ar);
}
CATCH_ALL(e)
{
ar.Close();
delete pFile;
THROW_LAST();
}
END_CATCH_ALL
ar.Close();
delete pFile;//关键是这里,利用内存文件
}
}
int xoffset=0,yoffset=0;
int i;
m_usrCurrentObject = pDoc->m_CopyaObjects[0];
xoffset=PastePoint.x-m_usrCurrentObject->m_x1;
yoffset=PastePoint.y-m_usrCurrentObject->m_y1;
for(i = pDoc->m_CopyaObjects.GetSize()-1; i >= 0; i--)
{
m_usrCurrentObject = pDoc->m_CopyaObjects[i];
m_usrCurrentObject->m_x1+=xoffset;
m_usrCurrentObject->m_x2+=xoffset;
m_usrCurrentObject->m_y1+=yoffset;
m_usrCurrentObject->m_y2+=yoffset;
}if(pDoc->m_CopyaObjects.GetSize()>300&&pDoc->m_aObjects.GetSize()>300){AfxMessageBox("粘贴大量元件会造成程序长时间无响应");return;}
CopyToArray(&pDoc->m_CopyaObjects,&pDoc->m_aObjects,0);
CopyToArray(&pDoc->m_CopyaObjects,&pDoc->m_TemplateObjects,1); //MoveSelGraph(&pDoc->m_CopyaObjects,point1.x,point1.y,5);
Invalidate();
doc中
CTypedPtrArray<CObArray, CBase*> m_aObjects;//需在stafx.h中加入#include <afxtempl.h>
CTypedPtrArray<CObArray, CBase*> m_CopyaObjects;
CTypedPtrArray<CObArray, CBase*> m_TemplateObjects;