MFC中A窗口收不到B窗口发送的消息,怎么回事

来源:互联网 发布:录音机软件下载 编辑:程序博客网 时间:2024/04/28 13:39
我创建了两个工程,分别在resources.h中定义的消息#define WM_DATACOMING WM_USER+100; 工程1中用来接收工程而中发来的消息,通过内存映射将内存中的消息显示在工程1中的标签上,现在工程1的窗口收不到工程2中发的自定义消息,不知怎么回事?请指教,谢谢,代码如下:
工程1中的代码

BEGIN_MESSAGE_MAP(CTMemMapingDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, &CTMemMapingDlg::OnBnClickedButton1)
ON_MESSAGE(WM_DATACOMING, &CTMemMapingDlg::OnDataComing)//这是自定义消息
END_MESSAGE_MAP()

LRESULT CTMemMapingDlg::OnDataComing(WPARAM wParam, LPARAM lParam)
{
UpdateData(TRUE); //在这儿设断点不进来
HANDLE hFilemap = OpenFileMapping(NULL,NULL,_T("SHARED"));
LPVOID pVoid = MapViewOfFile(hFilemap,FILE_MAP_ALL_ACCESS,0,0,0);
m_Label.SetWindowText((LPCTSTR)pVoid);
UpdateData(FALSE);

return 0;
}


工程2中的代码

void CTMemMaping2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HANDLE hFileMap = CreateFileMapping((HANDLE)0xFFFFFFFF,
NULL,
PAGE_READWRITE,
0,
100,
_T("SHARED"));
LPVOID pVoid = MapViewOfFile(hFileMap,FILE_MAP_ALL_ACCESS,0,0,0);
memset(pVoid,0,100);
strcpy((char*)pVoid,"this is a mapping file test");
HANDLE hDes = FindWindow(NULL,_T("TMemMaping"));
::SendMessage((HWND)hDes,WM_DATACOMING,0,0);
CloseHandle(hFileMap);
UnmapViewOfFile(pVoid);
}


0 0
原创粉丝点击