您好,我是一位VC爱好者,我现在写程序的时候遇到了一个问题,我想了很久都没有解决,希望您能帮助我。   
          我是在WINNT平台上用VC++6开发程序的,在扩展DLL中创建了一个OVERLAPPEDWINDOW窗体,这个窗体包含了工具栏和状态栏,在主窗体中能够正确的调用DLL的函数创建并显示这个窗体,但由于DLL是共享资源,即使有窗体也没有自己的消息队列,但工具栏和状态栏也有UPDATE_COMMAND_UI消息,而且对这些消息的处理函数的调用是在应用程序的空闲状态处理过程中进行的,这一点与菜单不同。只有在消息队列没有消息时才调用ONIDLE(),但DLL中的窗体根本没有自己的消息对列当然就不会调用ONIDLE()啦,就会出现如下现象:DLL创建的这个窗体不能响应加速键,大小写锁定键,数字锁定键(在按这些键时,父窗体却响应了,即使子窗体在激活状态),当鼠标拖拉工具栏为浮动状态时,它原先的位置没有被刷新(没更新命令用户接口)。工具栏中的项与菜单中的对应项不同步。我如何才能解决这个问题呢?望您回复   如果有例子更好,我的油箱:[email protected] 

解决方案 »

  1.   

    你是MFC扩展DLL么?导出的是框架类?那么和普通的类是一样使用的,关键是是否为app类的m_pMainFrame指针赋值了。
      

  2.   

       我的Dll是个常规Dll!
      

  3.   

         dll中的窗口也是可以进行消息处理的,问题的关键在于你怎么使用这个DLL的。
      

  4.   

        原由是这样的,我原来做的一个程序是exe程序,有主框架,有文挡,有视图,工具条等,现在老总让我把这程序做成一dll,我现在把程序已经更改成了一个常规dll了,但是现在关于工具条的消息处理有问题,工具条的可使用和不可使用现在不知道怎么控制了!呵呵,谢谢,现在不象原来有CWinApp::Run控制,现在没有了这个消息控制,我现在就想问有什么办法可以处理这些消息!我是小虾米!呵呵