说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于监视剪帖版 (给我一个送你30分的机会)

编辑:说三道四文库 发布时间:2018-05-23 07:00
HTML文档下载 WORD文档下载 PDF文档下载

下面是监视剪帖版的说明。
我照着做了。
但不成功
源文件:http://coolcalf.363.net/cp.zip

说明:

监 视 剪 贴 板 

在Form1的.h的private加上: 
void __fastcall ClipboardChanged(TMessage& Msg); 

在Form1的.h的public加上: 
BEGIN_MESSAGE_MAP 
 MESSAGE_HANDLER(WM_DRAWCLIPBOARD,TMessage,ClipboardChanged) 
END_MESSAGE_MAP(TForm) 

在Form1的.cpp内加上: 
void __fastcall TForm1::ClipboardChanged(TMessage& Msg) 

 POINT MousePos; 
 GetCursorPos(&MousePos); 
 PopupMenu4->PopupComponent=Form1; 
 PopupMenu4->Popup(MousePos.x,MousePos.y); //一有变化,就弹出一个菜单,复制,剪切或清除都能引发此函数 


在Form1的.cpp内有一个ToolButton 
void __fastcall TForm1::ToolButton9Click(TObject *Sender) 

 static HWND LastHandle; 
 static bool clip=false; 
 if(clip==true) 
 { 
  ToolButton9->Down=false; 
  ChangeClipboardChain(Form1->Handle,LastHandle); //结束监视 
 } 
 else 
 { 
  ToolButton9->Down=true; 
  Clipboard()->Clear(); 
  Application->Minimize(); 
  LastHandle=SetClipboardViewer(Form1->Handle); //启动监视 
 } 
 clip=!clip; 
}

Window的附件里就有一个剪切版查看程序的,如果你一定要在程序中实现的话建议:
if (Clipboard()->HasFormat(CF_TEXT))
 //如果剪贴版上的数据为文本格式
{
Form1->RechEdit1->Visible=true;
RichEdit1->text=Clipboard()->AsText;
//显示内容
}
else if (Clipboard()->HasFormat(CF_BITMAP))
//如果为图象格式
{
 Form1->richedit->visible=false;
Form->button->Glyph->Assign(Clipboard())
}
不是这个意思

我是说我上面提供的程序根本就不能监视到剪贴版的变化

:(
我试了一下可以的,我按我的方式改了一下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{   static HWND LastHandle;
    static bool clip=false;
    if(clip==true)
    {
      Button1->Enabled=false;
      ChangeClipboardChain(Form1->Handle,LastHandle);
    }
    else
    {
      Button1->Enabled=true;

      EmptyClipboard();
      Application->Minimize();
      LastHandle=SetClipboardViewer(Form1->Handle);
    }
    clip=!clip;

}

只是简单实现而已,不太实用。
 果然成功,谢谢~!  送分
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘