我要写一段代码实现 复制 剪切 粘贴 请问要任何实现 思路也行??????????????
解决方案 »
- 依旧是菜鸟关于BMP24位图转换为灰度图的小问题
- VC 2005 我想把 单位编号 单位名称 存在 下拉列表中 选择单位名称 也能得到 单位编号
- 如何计算两个图片的差异部分?
- 请教:怎么能用编程的方式控制delphi开发的DCOM服务程序的安全属性?
- 怎样在新建word中加入文本,请高手指教!!!
- 参数传递的问题
- 请高手指点下这个错误的含义"DAMAGE:after NOmal block(#1150) at 0x004321110
- 关于显示图片CPU占用问题?
- 如何实现程序运行后直接打开IE并浏览指定HTMl页面。
- 怎么样全屏显示一幅图片。要求确确实实的全屏.
- 关于插入web browser问题....
- VC开发WebService客户端?
复制操作
CString str;
str="jjjjjjjjjjjjj";//str为你要复制的内容
LPSTR pGlobal;
HGLOBAL hGlobal;
CWnd *pwnd = AfxGetMainWnd();
pwnd->OpenClipboard();
EmptyClipboard();
hGlobal=GlobalAlloc(GHND|GMEM_SHARE,(lstrlen(str)+1)*sizeof(TCHAR));
pGlobal=(LPSTR)GlobalLock(hGlobal);
lstrcpy(pGlobal, str);
GlobalUnlock(hGlobal);
SetClipboardData(CF_TEXT, hGlobal);
CloseClipboard();
//////////////////////////////////////
粘贴操作
if ( OpenClipboard() )
{
if (!IsClipboardFormatAvailable(CF_TEXT))
return ;
HANDLE hData = GetClipboardData(CF_TEXT);
char * buffer = (char*)GlobalLock(hData);
fromClipboard = buffer;
GlobalUnlock(hData);
CloseClipboard();
}
Following are the functions used with the clipboard.
**********************************************************8
ChangeClipboardChain
CloseClipboard
CountClipboardFormats
EmptyClipboard
EnumClipboardFormats
GetClipboardData
GetClipboardFormatName
GetClipboardOwner
GetClipboardSequenceNumber
GetClipboardViewer
GetOpenClipboardWindow
GetPriorityClipboardFormat
IsClipboardFormatAvailable
OpenClipboard
RegisterClipboardFormat
SetClipboardData
SetClipboardViewer
如果只是单个文件,可以用CopyFile、MoveFile;如果是多个文件和目录,可以用SHFileOperation;如果要利用剪贴板传递数据,参考3楼列出的函数。
IsClipboardFormatAvailable()是要带类型的啊
Windows也是这样啊,你复制一个文件,让后在记事本里粘贴是不成功的,这里就是对剪贴板内的数据做了判断
用RegisterClipboardFormat() API函数先将此格式注册,假设我们有下面的结构:
struct MyFormatData
{
long val1;
int val2;
};
想将此结构的数据拷贝到剪贴板上。可以这样实现:
UINT format = RegisterClipboardFormat("MY_CUSTOM_FORMAT");
if(OpenClipboard())
{
//make some dummy data
MyFormatData data;
data.val1 = 100;
data.val2 = 200;
//allocate some global memory
HGLOBAL clipbuffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, sizeof(MyFormatData));
MyFormatData * buffer = (MyFormatData*)GlobalLock(clipbuffer);
//put the data into that memory
*buffer = data;
//Put it on the clipboard
GlobalUnlock(clipbuffer);
SetClipboardData(format,clipbuffer);
CloseClipboard();
}
把它从剪贴板上读下来
//第二次调用时,此格式已经注册过了,读下来就行了
UINT format = RegisterClipboardFormat("MY_CUSTOM_FORMAT");
MyFormatData data;
if(OpenClipboard())
{
//get the buffer
HANDLE hData = GetClipboardData(format);
MyFormatData * buffer = (MyFormatData *)GlobalLock( hData ); data = *buffer;
GlobalUnlock( hData );
CloseClipboard();
}