我用了BeautyQQ的代码,重新建立一个工程TestQQ可以正常运行,但是往我以前的项目新建立对话框,并按照建立TestQQ时的方法,配置好,并且编译通过了。
但是当调用到:
m_rtClient.left = m_rtClient.right = m_rtClient.top = m_rtClient.bottom = 0;
    
CString tmp;
tmp=_T("ToolBar");
m_wndTool.Create(tmp.AllocSysString(), WS_CHILD | WS_VISIBLE, 
m_rtClient, this, 0);
的时候,TestQQ执行完之后m_wndTool的hWnd值有值,而我原来项目的m_wndTool的hWnd没有值,不知道什么原因?

解决方案 »

  1.   

    但是当调用到: 
    m_rtClient.left = m_rtClient.right = m_rtClient.top = m_rtClient.bottom = 0; 
        
    CString tmp; 
    tmp=_T("ToolBar"); 
    m_wndTool.Create(tmp.AllocSysString(), WS_CHILD | WS_VISIBLE, 
    m_rtClient, this, 0); 
    的时候,TestQQ执行完之后m_wndTool的hWnd值有值,而我原来项目的m_wndTool的hWnd没有值,不知道什么原因? 
    有值没值从哪里看出来的 ?
    原来的项目m_wndTool 是不是有问题呢?怎么会没值?
      

  2.   


    就是我原来的工程是别人的,添加了beautyQQ的代码而已,这段代码是在对话框上实现工具条的效果。
      

  3.   

    看看是不是在Release模式下debug了?
      

  4.   

    this都是非模式对话框,调试不进去啊,别人的LIB.但是当调用到:
    m_rtClient.left = m_rtClient.right = m_rtClient.top = m_rtClient.bottom = 0;
       
    CString tmp;
    tmp=_T("ToolBar");
    m_wndTool.Create(tmp.AllocSysString(), WS_CHILD | WS_VISIBLE,
    m_rtClient, this, 0);
    的时候,TestQQ执行完之后m_wndTool的hWnd值有值,而我原来项目的m_wndTool的hWnd没有值,不知道什么原因?
    有值没值从哪里看出来的 ?
    原来的项目m_wndTool 是不是有问题呢?怎么会没值?
    ---------
    m_wndTool的初始化都一样的,APP中也都加入了初始化代码,TestQQ是我新建立的一个工程,原来的项目没有m_wndTool,是我新添加的,但已经给了初始化了.
      

  5.   

    m_wndTool.Create(tmp.AllocSysString(), WS_CHILD | WS_VISIBLE, m_rtClient, this, 0); 
     --- 这个创建,是不是返回成功了
      

  6.   

    失败的  返回0.
    我发现原来工程是采用shared library方式,新建的项目是static dll方式的,不知道有没有影响,代码是别人以前维护的,我改成static dll方式的时候出现一大堆外部错误.
      

  7.   


    就是这个原因,我用新建立的项目改成shared library也是返回失败,改成static dll就返回成功,
    这个到底怎么回事的? 另外改成static dll之后,原来的那些外部错误不知道怎么处理?
      

  8.   

    现在我想把新的模块以shared library方式加载进去,已经有dll,lib放在主目录下,请问要怎么加载的? 谢谢.
      

  9.   

    dll 的lib(不包含代码实现) 和静态lib(包含代码实现) 是不一样的,不能互换
      

  10.   

    改成static 方式,运行库改变了,所以会有一些link的unresolved的错误,你需要beautyQQ支持static方式