求将dll 的非模式对话框嵌入到视图里显示

小黄老菜鸟 2008-11-19 03:28:49
求将dll 的非模式对话框嵌入到视图里显示(在视图里动态加载DLL)
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjhaoren 2011-01-22
  • 打赏
  • 举报
回复
高手们,能否给个实例。我很困扰啊。
qrlvls 2009-09-09
  • 打赏
  • 举报
回复
其实只需要两个函数而已

extern "C" __declspec(dllexport) void InitializeUI(HWND hwndParent, RECT rcArea)
{
g_wndSpy.Create(IDD_DIALOG_WEBWNDSPY, CWnd::FromHandle(hwndParent));
g_wndSpy.MoveWindow(&rcArea);
g_wndSpy.ShowWindow(SW_SHOW);
}

extern "C" __declspec(dllexport) void UninitializeUI()
{
if ( g_wndSpy.GetSafeHwnd())
g_wndSpy.PostMessage(WM_DESTROY, 0, 0);
}

需要注意由于是在不同的模块中,那么资源切换是一个问题

if ( m_pluggin.InitializeUI )
{
HINSTANCE hResourceHandle = AfxGetResourceHandle();
AfxSetResourceHandle(m_pluggin.hModule);
{
CRect rcClient;
GetClientRect( rcClient );
rcClient.DeflateRect(280, 0, 0, 0);
m_pluggin.InitializeUI( m_hWnd, rcClient);
}
AfxSetResourceHandle(hResourceHandle);
}

具体参考:http://blog.csdn.net/qrlvls/archive/2008/12/28/3629935.aspx

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qrlvls/archive/2008/12/28/3629935.aspx
muzizongheng 2009-09-09
  • 打赏
  • 举报
回复
CString strTemp = _T("");
CRect rect;
CWnd* pWnd = (CWnd*)GetDlgItem(IDC_TEST); //你要创建时指定的位置 , 暂时有static占位
pWnd->GetWindowRect(&rect);
ScreenToClient(&rect);

m_dlgTest.Create(rect, this, IDC_TEST); //你从dll里获得的dlg指针, 如果已经在dlg创建好, 在整理SetWindowPos/MoveWindow来定位
Cacar 2009-07-01
  • 打赏
  • 举报
回复
MoveWindow()....
cnzdgs 2008-11-19
  • 打赏
  • 举报
回复
哪里不会?

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧