功能:类似于VC6.0的界面
要求:使用dll显示
      具体要求是:在主框架中显示一个左边停靠的CControlBar,CControlBar中的内容要求使用Dll中的内容,比如Dll有一个对话框,含有树控件。也就是说dll中的对话框要嵌入到CControlBar中。现遇到的问题是,在调用dll时,dll的对话框显示的位置不对,并且也不是内嵌在CControlBar中。主程序中的代码如下:
   if (!m_bar.Create(_T("My Bar"), this, 123))
    {
        TRACE0("Failed to create mybar\n");
        return -1;      // fail to create
    }

    m_bar.SetBarStyle(m_bar.GetBarStyle() |
        CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

m_bar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_bar,AFX_IDW_DOCKBAR_LEFT);    //-----------------------加载DLL

m_listbar_Dll=LoadLibrary(_T("ListDll.dll"));
if (m_listbar_Dll==NULL)
{
AfxMessageBox("动态链接库加载失败!");
return 0;
}

typedef HWND (_stdcall *ADDPROC)(CWnd *p);
ADDPROC Add_list=(ADDPROC)GetProcAddress(m_listbar_Dll,"ShowDlg");
if (Add_list==NULL)
{
AfxMessageBox("函数地址加载失败");
FreeLibrary(m_listbar_Dll);
exit(1);
}

Add_list(&m_bar);动态链接库中有一个对话框(Style:Child,Border:None)
      代码如下:
ShowDlg(CWnd *p)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CoInitialize(NULL); 
AfxEnableControlContainer(); 
         CListDlg *pDlg=new CListDlg(p);
pDlg->Create((LPCTSTR)IDD_LISTDLG,NULL);
pDlg->ShowWindow(SW_SHOW);
}