要设计一个DLL引出函数,将对话框的句柄传给应用程序,应用程序直接向这个窗口发消息就行了
解决方案 »
- MFC中对话框上放置CHtmlView控件导致加载WEB页面时的闪烁问题
- 定时器更新时间不影响其他控件
- DirectShow 显示音频波形
- 帮忙看看以下的代码
- 大家是如何解决TCP/IP通讯的沾包问题的?
- 请教高手:调用setupapi安装inf驱动成功后,重启时怎么让windows不再弹出找到设备的对话框?
- WIN2000下的关机问题?请高手们想想办法!
- 菜鸟提问!!!请多关照
- 十万火急,高分相赠。mfc+word
- 命名管道实现 服务器 和 客户端登陆界面 的通讯,无法做到循环自动判断,求解决……
- 怎样得到一串字符串的长度(毫米)?
- 请问:Install-Shield安装过程中能否自动将当前VC工程文件所用到的dll等信息?
AFX_MANAGE_STATE(AfxGetStaticModuleState());
不然得不到资源的handle
extern "C" _declspec(dllexport) LRESULT SendUMessage(UINT uMsg,WPARAM wParam,LPARAM lParam)
{ if(IsWindow(g_Wnd.m_hWnd))
return g_Wnd.SendMessage(uMsg,wParam,lParam);
else
return 0;
}
在主程序中:
同样写一个函数:
在CCompile的头文件定义:typedef LRESULT (FUNC_SENDUMESSAGE)(UINT ,WPARAM ,LPARAM );
FUNC_SENDUMESSAGE* m_pFuncSendUMessage;
然后初始化:
void CCompile::Init()
{
VERIFY(m_hInstance=::LoadLibrary("Comm.dll"));
VERIFY(m_pFuncSendUMessage=(FUNC_POSTUMESSAGE*) ::GetProcAddress(m_hInstance,"SendUMessage"));
}
LRESULT CCompile::SendUMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if(m_pFuncSendUMessage!=NULL)
return (*m_pFuncSendUMessage)(uMsg,wParam,lParam);
else
return 0;
}
这样我们在主程序中发消息就能被动态库所响应了。例如我们在主程序中SendUMessage(WM_CHAR,0,0);在动态库就会相应的激发动作