wm_copydata使用方法

wm_copydata使用方法,第1张

#pragma pack(1) struct Student { char ID[10]TCHAR Name[20]UINT AgeUINT Gradechar Room[5]char Tel[12]}#pragma pack() //********************************************************** 因为需要在接收方的OnCopyData()函数中区分发送的两种不同类型数据。所以就定义了以下两个常量: #define STRING 1 #define STUDENT 2 发送方: void CSendDataDlg::OnBtSend() //实现CString类型数据的发送 { UpdateData(TRUE)if (m_szData.IsEmpty()) { m_szData = _T("Hello")UpdateData(FALSE)} // m_szData += '\0'HWND hWndRcv = ::FindWindow(NULL,"Receiver")if (hWndRcv == NULL) { AfxMessageBox(_T("找不皮橡到接收窗口,发送不成功"))return } COPYDATASTRUCT cpdcpd.dwData = STRING//标志为CString类念启型 cpd.cbData = m_szData.GetLength() + 1//GetLength()只是取得实际字符的长度,没有燃高旁包括'\0'. cpd.lpData = (void*)m_szData.GetBuffer(cpd.cbData)::SendMessage(hWndRcv,WM_COPYDATA,(WPARAM)this->m_hWnd,(LPARAM)&cpd)m_szData.ReleaseBuffer()AfxMessageBox(_T("发送成功"))} void CSendDataDlg::OnBtStu() //实现Student类型数据的发送 { UpdateData()m_szID += '\0'm_szName += '\0'm_szRoom += '\0'm_szTel += '\0'm_pStu = new Student()strcpy(m_pStu->ID,m_szID.GetBuffer(m_szID.GetLength()))_tcscpy(m_pStu->Name,m_szName.GetBuffer(m_szName.GetLength()))strcpy(m_pStu->Room,m_szRoom.GetBuffer(m_szRoom.GetLength()))strcpy(m_pStu->Tel,m_szTel.GetBuffer(m_szTel.GetLength()))m_szID.ReleaseBuffer()m_szName.ReleaseBuffer()m_szRoom.ReleaseBuffer()m_szTel.ReleaseBuffer()m_pStu->Age = m_nAgem_pStu->Grade = m_nGradeHWND hWndRcv = ::FindWindow(NULL,"Receiver")if (hWndRcv == NULL) { AfxMessageBox(_T("找不到接收窗口,发送不成功"))return } COPYDATASTRUCT cpdcpd.dwData = STUDENT// 标志为Student类型 cpd.cbData = sizeof(Student)cpd.lpData = (PVOID)m_pStu::SendMessage(hWndRcv,WM_COPYDATA,(WPARAM)this->m_hWnd,(LPARAM)&cpd)delete m_pStuAfxMessageBox(_T("发送成功"))} 接收方: 在OnInitDialog方法中: //*************************************************************** //初始化ListCtrl控件 LVCOLUMN columncolumn.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTHcolumn.cx = 80column.iSubItem = 0column.pszText = _T("ID")m_ListCtl.InsertColumn(0,&column)column.cx = 80column.pszText = _T("Name")column.iSubItem = 1m_ListCtl.InsertColumn(1,&column)column.cx = 55column.pszText = _T("Age")column.iSubItem = 2m_ListCtl.InsertColumn(2,&column)column.cx = 55column.pszText = _T("Grade")column.iSubItem = 3m_ListCtl.InsertColumn(3,&column)column.cx = 55column.pszText = _T("Room")column.iSubItem = 4m_ListCtl.InsertColumn(4,&column)column.cx = 80column.pszText = _T("Tel")column.iSubItem = 5m_ListCtl.InsertColumn(5,&column)BOOL CReceiverDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { switch (pCopyDataStruct->dwData) { // 接收到的是CString类型 case STRING: m_szData += (LPCSTR)(pCopyDataStruct->lpData)UpdateData(FALSE)breakcase STUDENT: // 接收到的是Student类型 CString id,name,room,telUINT age,gradeCString strStudent* pStu = (Student*)(pCopyDataStruct->lpData)id = pStu->IDname = pStu->Nameroom = pStu->Roomtel = pStu->Telage = pStu->Agegrade = pStu->GradeLVITEM item// 把接收到的数据显示到ListCtrl控件上 item.mask = LVIF_TEXTint n = m_ListCtl.GetItemCount()item.iItem = nitem.iSubItem = 0item.pszText = id.GetBuffer(id.GetLength())id.ReleaseBuffer()m_ListCtl.InsertItem(&item)m_ListCtl.SetItemText(n,1,name)str.Format("%d",age)m_ListCtl.SetItemText(n,2,str)str.Format("%d",grade)m_ListCtl.SetItemText(n,3,str)m_ListCtl.SetItemText(n,4,room)m_ListCtl.SetItemText(n,5,tel)UpdateData(FALSE)//delete pStubreak} // return CDialog::OnCopyData(pWnd, pCopyDataStruct)return TRUE}

参考资料: http://www.programbbs.com/doc/304.htm

往data里复制羡者乎文件有三步。

1、把桌面上系统工具文件夹里面的授权管理打开,按菜单键打开ROOT权限。嫌迹进入RE管理器兄悉,进入SD卡把你那个文件复制。向上进入相应的文件夹。

2、进入RE管理器,进入SD卡把文件复制。

3、向上进入相应的文件夹。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12352775.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存