- 2
- 0
- 约2.58千字
- 约 4页
- 2017-11-20 发布于北京
- 举报
VC之线程和进程之用剪贴板实现进程间通信
一、创建对话框应用程序工程
二、编辑对话框资源控件ID及标题IDD_THREAD_DIALOG??????用剪贴板实现进程间通信IDC_STATIC??????????????????????????进程1发送数据:IDC_EDIT_SENDIDC_STATIC??????????????????????????进程2接收数据:IDC_EDIT_RECIDC_SEND??????????????????????????? 发送IDC_REC?????????????????????????????? 接收
三、添加消息响应函数
四、于“ThreadDlg.cpp”文件内添加消息响应函数代码
void CThreadDlg::OnRec() {?// TODO: Add your control notification handler code here?if(OpenClipboard())?{??if(IsClipboardFormatAvailable(CF_TEXT))??{???HANDLE clipboard;???char* buf;???clipboard=GetClipboardData(CF_TEXT);???buf=(char*)GlobalLock(clipboard);??????????? GlobalUnlock(clipboard);???SetDlgItemText(IDC_EDIT_REC,buf);????? CloseClipboard();??}?}?}
void CThreadDlg::OnSend() {?// TODO: Add your control notification handler code here?if(OpenClipboard())????????????????????????//打开剪贴板?{??CString str;??HANDLE clipboard;??char * buf;??EmptyClipboard();??????????????????????? //清空剪贴板??GetDlgItemText(IDC_EDIT_SEND,str);??clipboard=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);??buf=(char*)GlobalLock(clipboard);?????? //空字符作文本数据结尾,多分配一个字节?? strcpy(buf,str);?? GlobalUnlock(clipboard);?? SetClipboardData(CF_TEXT,clipboard);?? CloseClipboard();?}?}
五、编译六、运行
七、函数说明??????? 1、SetClipboardData()函数声明HANDLE? SetClipboardData(?????????????? UINT? nFormat,?????????????? //剪贴板格式?????????????? HANDLE? hMen???????????? //特定格式之数据句柄?????????????? )?????????????? 功能:以特定剪贴板格式复制数据到剪贴板。函数调用成功,返回数据句柄;失败,返回NULL,可用GetLastError()函数获取详细错误信息。??????? 2、GetClipboardData()函数声明HANDLE? GetClipboardData(??????????????? UINT? uFormat??????????????? //剪贴板模式??????????????? )?????????????? 功能:以特定模式获取剪贴板信息。函数调用成功,返回非零值;失败,返回零。??????? 3、GlobalLock()函数声明LPVOID? GlobalLock(?????????????? HGLOBAL? hMen??????????? //指向全局内存对象之句柄。?????????????? )?????????????? 功能:锁定一全局内存对象。函数调用成功,返回内存对象第一个字节的指针;失败,返回NULL,可用GetLastError()函数获取详细错误信息。??????? 4、GlobalUnlock()函数声明LPVOID? GlobalUnlock(?????????????? HGLOBAL? hMen????????????? //指向全局内存对象之句柄。????????????? ?)????
原创力文档

文档评论(0)