孙鑫vc++ 17 进程间通信(1)剪贴板

1.进程间通信方式

(1)剪贴板

(2)匿名管道

(3)命名管道

(4)邮槽

 

2.剪贴板代码

void CClipboardDlg::OnBnClickedBtnSend()
{
      // TODO: Add your control notification handler code here
      UpdateData(TRUE);

      //(1)打开剪贴板

      if (OpenClipboard())
       {

             //(2)清空剪贴板,将剪贴板的拥有者设置为当前窗口
             EmptyClipboard();
             HANDLE hClip;

             //(3)为了存储数据,开辟一块大小和格式固定的内存
             hClip = GlobalAlloc(GMEM_MOVEABLE,m_strSend.GetLength()+1);
             char* pBuf;

             //(4)将开辟的内存锁定,并且返回此块内存的指针
             pBuf = (char*)GlobalLock(hClip);
             strcpy(pBuf,m_strSend);//(5)开始复制控件中的数据进入内存
             GlobalUnlock(hClip);//(6)解锁内存,将内存对象的锁计数减一

             //(7)将数据放进剪贴板,设置对应的数据格式
             SetClipboardData(CF_TEXT,hClip);

             //(8)关闭剪贴板,如果不调用此函数,其他应用程序就不能调用剪贴板
             CloseClipboard();
        }

       UpdateData(FALSE);
}

 

void CClipboardDlg::OnBnClickedBtnRecv()
{
        // TODO: Add your control notification handler code here

        //(1)打开剪贴板
        if (OpenClipboard())
          {

             //(2)查看剪贴板中是否有此种类型的数据
             if (IsClipboardFormatAvailable(CF_TEXT))
               {

                 //(3)获得剪贴板的内存块首地址
                  HANDLE hClip = GetClipboardData(CF_TEXT);
                  char* pBuf;

                 //(4)锁定内存块并且得到内存块首地址的指针
                  pBuf = (char*)GlobalLock(hClip);

                 //(5)接触锁定
                  GlobalUnlock(hClip);

                 //(6)关闭剪贴板
                  CloseClipboard();
                  m_strRecv = (LPCTSTR)pBuf;
                }
            }
          UpdateData(FALSE);
}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值