从DLL里加载工具条的问题
我想MDI从DLL里加载工具条。
计划如下:
1.在DLL里创建工具条
2.在CChildFrame中OnCreate()调用
DockControlBar (m_ToolBar1, AFX_IDW_DOCKBAR_BOTTOM); //到此句出错
出错,注释掉此句,工具条不显示,为什么呢?大牛帮帮忙啊?
我把工具条创建放在CChildFrame的OnCreate()正常。放在DLL里调用,到DockControlBar(m_ToolBar1, AFX_IDW_DOCKBAR_BOTTOM); 就出错。
计划如下:
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); 就出错。
...全文
相关推荐
ObjectARX给Auto CAD加工具条
ObjectARX给Auto CAD加工具条,并在向导关键地方附图片说明。
dll是在何时被加载?如何延迟加载dll?
dll延迟加载,dll加载方式
内存加载带有TLS的DLL的问题分析
【内存加载DLL的TLS问题分析】内存加载DLL时,由于未正确处理TLS(线程局部存储)机制,导致带TLS的DLL出现崩溃问题。分析发现:1)静态TLS变量未初始化,2)隐式TLS(如复杂类型局部static变量)会引发访问错误。测试显示,错误访问的TLS内存块实际属于其他模块。特别指出Meyers单例模式会隐式引入TLS风险。解决方案建议去除TLS变量或改用系统加载,并需警惕复杂类型局部static变量带来的隐式TLS问题。
完美的内存中加载DLL支持32位和64位DLL
一位高手写的内存中加载DLL的源代码,支持32位和64位的DLL,支持XE,完美的处理32/64位Windows动态库的加载模,网上很少能下载到了,放到这里备份一下
vc 控制word添加工具条
注册动态库后,word里自动添加一个工具条。


进程/线程/DLL
