mark一下
结构体
struct Info{
TCHAR g_strFileType[MAX_PATH];
bool bStop;
};
这是发送端的进程
HWND hWndRcv=::FindWindow(NULL,_T("RECV COPY DATA"));
if(hWndRcv==NULL)
{
::AfxMessageBox(_T("Not Found Window"));
((CButton*)(GetDlgItem( IDC_CHECK1 )))->SetCheck(0) ; //IDC_CHECK is ID for control
return;
}
UpdateData(true);
Info *m_info;
m_info = new Info();
_tcscpy(m_info->g_strFileType,m_Filetype.GetBuffer(m_Filetype.GetLength()*2+2));
int checkState1 = IsDlgButtonChecked(IDC_CHECK1);
if (BST_CHECKED==checkState1)
{
m_info->bStop = true;
}
else
{
m_info->bStop = false;
}
COPYDATASTRUCT cpd;
cpd.dwData=1;
cpd.cbData=sizeof(Info);
cpd.lpData=(PVOID)m_info;
::SendMessage(hWndRcv,WM_COPYDATA,(WPARAM)this->m_hWnd,(LPARAM)&cpd);
UpdateData(FALSE);
::AfxMessageBox(_T("send sucess!"));
接受的进程
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,LPARAM
lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
case WM_COPYDATA:
OutputDebugString(_T("CopyData"));
// 当收到WM_COPYDATA消息时,从lParam中提取出
// COPYDATASTRUCT
PCOPYDATASTRUCT lpcds = (PCOPYDATASTRUCT)lParam;
if (lpcds->dwData==1)
{
Info *info = (Info*)(lpcds->lpData);
OutputDebugString(info->g_strFileType);
_tcscpy(g_info.g_strFileType,info->g_strFileType);
g_info.bStop = info->bStop;
}
return 0;
}
return DefWindowProc(hwnd, message, wParam, lParam);
}