通过主窗口的句柄来实现调用或发消息,
主对话框中以下语句向DLL中传递了主对话框的句柄hparent:
info.pPlug->CreateForm(hparent);DLL中如下函数接受了该句柄hparent:
void CClass1DataReadPlugin::CreateForm(HWND hParent)
{
}现在hparent就是主窗口的句柄,要在DLL中通过这个句柄调用主窗口类的函数怎么写?要向主窗口发消息怎么写?谢谢~
主对话框中以下语句向DLL中传递了主对话框的句柄hparent:
info.pPlug->CreateForm(hparent);DLL中如下函数接受了该句柄hparent:
void CClass1DataReadPlugin::CreateForm(HWND hParent)
{
}现在hparent就是主窗口的句柄,要在DLL中通过这个句柄调用主窗口类的函数怎么写?要向主窗口发消息怎么写?谢谢~
DLL中
#define WM_GETMESSAGE WM_USER+112 //自定义消息
HANDLE hMapping;
LPWSTR lpData;
hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,"MYSHARE");
if(hMapping!=NULL)
{
lpData=(LPWSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if(lpData!=NULL)
{
swprintf(lpData,L"%s","你要写的数据");
//给主线程发送消息 g_hMain是目标进程的窗口句柄
PostMessage(g_hMain,WM_GETMESSAGE,NULL,NULL);
}
UnmapViewOfFile(lpData);
}
主窗口进程
添加自定义消息WM_GETMESSAGE代码省略主窗口进程接收函数LRESULT CMainDlg::OnReceiveMessage(WPARAM wParam, LPARAM lParam)
{
HANDLE hMapping;
LPWSTR lpData;
hMapping=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,0x1000,"MYSHARE");
if(hMapping!=NULL)
{
lpData=(LPWSTR)MapViewOfFile(hMapping,FILE_MAP_ALL_ACCESS,0,0,0);
if(lpData!=NULL)
{
CString strText(lpData);
//处理接收到的数据
.......
}
UnmapViewOfFile(lpData);
}
return true;
}