目的:做一个自定义的树型控件,过程如下
做法:
1,建立一个SDI应用程序
2,在框架类头文件中添加:CTreeCtrl m_wndTree;然后在资源的String Table中添加IDC_MYTREECTRL,说明为"TREECTRL"
3,在OnCreate函数中添加:
  if (!m_wndTree.Create(WS_CHILD | WS_VISIBLE | TVS_HALINES, CRect(0,0,800,800),&m_wndBar, IDC_MYTREECTRL))
{
  TRACE0(" ..... ");
 return -1;
}

这些代码没有问题,在程序中没有添加动态库之前,运行没有任何问题。但是在加入了动态库后,出问题了:
我在vc的编译环境下,点击“!”执行程序,没有问题。但是我到release目录下,点击可执行文件,就出现提示:“没有找到 TREECTRL”,也就是没有找到String Table中为IDC_MYTREECTRL添加的说明:"TREECTRL",不过这对程序的其它运行并没有影响。不知道是什么原因。

解决方案 »

  1.   

    load资源的时候要指定资源所在模块句柄,默认都是在当前可执行文件查找,而你的在动态库当然找不到了,
      

  2.   

    如果是MFC规则DLL,并且使用共享DLL中的MFC,需要在导出函数入口加上一行:
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
      

  3.   

    清除Bebug和Release文件夹内所以文件,删除*.ncb文件
    重新加载项目,重新编译 ...
      

  4.   

    Release目录下也放dll等,重新编译,再运行release目录下的