从DLL里加载工具条的问题

woshierjian woshierjian 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想MDI从DLL里加载工具条。
计划如下:
1.在DLL里创建工具条

extern "C" _declspec(dllexport) BOOL FristToolBarAPI (HWND HParentWnd,HWND* pHFunctionWnd,CBCGPToolBar*& pTool)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CWnd* m_parentwnd=CWnd::FromHandle(HParentWnd);

m_wndToolBar = new CBCGPToolBar;
if (m_wndToolBar != NULL)
{
//m_wndDialogBar->Create(IDD_ADD1DLG,m_parentwnd);
if (!m_wndToolBar->Create (m_parentwnd,
WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_TOOLTIPS|CBRS_FLYBY|
CBRS_HIDE_INPLACE|CBRS_SIZE_DYNAMIC|
CBRS_GRIPPER | CBRS_BORDER_3D, IDW_BAR1) ||
!m_wndToolBar->LoadToolBar(IDR_TOOLBAR1, 0, 0, FALSE, 0, 0, IDB_BITMAP1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
*pHFunctionWnd=m_wndToolBar->m_hWnd;
pTool=m_wndToolBar;
}
return TRUE;
}


2.在CChildFrame中OnCreate()调用

hToolDll=LoadLibrary(_T("AddBCGDlll.dll"));
if (hToolDll==NULL)
{
AfxMessageBox("LoadDllError");
}
else
{
ShowPARChildBar * pf1;
pf1=(ShowPARChildBar *)::GetProcAddress(hToolDll,_T("FristToolBarAPI"));
if (pf1==NULL)
{
AfxMessageBox("LoadProcError");
FreeLibrary(hToolDll);
hToolDll=NULL;
}
else
{
(*pf1)(m_hWnd,&pTool,m_ToolBar1);
CString strMDIToolbarTitle;
strMDIToolbarTitle.LoadString(IDW_DIALOGBAR1);
m_ToolBar1->SetWindowText(strMDIToolbarTitle);
m_ToolBar1->EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY); DockControlBar (m_ToolBar1, AFX_IDW_DOCKBAR_BOTTOM); //到此句出错

}
}


DockControlBar (m_ToolBar1, AFX_IDW_DOCKBAR_BOTTOM); //到此句出错
出错,注释掉此句,工具条不显示,为什么呢?大牛帮帮忙啊?

我把工具条创建放在CChildFrame的OnCreate()正常。放在DLL里调用,到DockControlBar(m_ToolBar1, AFX_IDW_DOCKBAR_BOTTOM); 就出错。
...全文

相关推荐

评论 15
收藏 已收藏
分享
返回顶部
woshierjian
进程/线程/DLL 15,466 成员 49,169 内容