none
如何在MFC Dll中创建toolBar,把它停靠在框架上 RRS feed

  • 问题

  • 需求是在MFC Dll中提供一个接口方法,直接生成一个toolbar,toolbar能够dock到主窗口中,并且响应事件(事件响应代码在dll中)。框架程序调用这个dll只需要读取配置xml文件,就能调用这个dll,动态创建工具栏,并能响应用户的单击消息和界面更新消息。
    前无古人,后无来者
    2009年9月7日 3:12

答案

  • 通过函数方式调用DLL,可以将主窗口的句柄通过函数传到DLL中。这样就像在主窗口所在的应用程序中创建toolbar。没有区别。
    麻烦把正确答案设为解答。
    • 已标记为答案 Tim Li 2009年9月11日 3:17
    2009年9月7日 4:36
    版主
  • 如果没有香MFC那样重用界面元素的必要,建议不把界面放在DLL里面,只把界面的逻辑放在DLL里面。
    例如在DLL中将XML读到一个自定义的数据结构,再根据数据结构在Exe里面创建工具栏。
    关于如何重用消息相应函数,可以参考DrawCli示例。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 Tim Li 2009年9月11日 3:17
    2009年9月7日 13:53
    版主

全部回复

  • 通过函数方式调用DLL,可以将主窗口的句柄通过函数传到DLL中。这样就像在主窗口所在的应用程序中创建toolbar。没有区别。
    麻烦把正确答案设为解答。
    • 已标记为答案 Tim Li 2009年9月11日 3:17
    2009年9月7日 4:36
    版主
  • 如果没有香MFC那样重用界面元素的必要,建议不把界面放在DLL里面,只把界面的逻辑放在DLL里面。
    例如在DLL中将XML读到一个自定义的数据结构,再根据数据结构在Exe里面创建工具栏。
    关于如何重用消息相应函数,可以参考DrawCli示例。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 Tim Li 2009年9月11日 3:17
    2009年9月7日 13:53
    版主
  • 如果没有香MFC那样重用界面元素的必要,建议不把界面放在DLL里面,只把界面的逻辑放在DLL里面。
    例如在DLL中将XML读到一个自定义的数据结构,再根据数据结构在Exe里面创建工具栏。
    关于如何重用消息相应函数,可以参考DrawCli示例。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP

    蒋大侠,我下载了DrawCli示例。你说里面有如何重用消息相应函数的例子,但是我看到里面就只是一个ole相关的例子,
    请问我参考哪一部分呢?能否再提示一下,谢谢!

    前无古人,后无来者
    2009年9月11日 5:33
  • CDrawTool负责响应鼠标事件。你可以用多态来重载CDrawTool更改对鼠标的控制逻辑

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年9月11日 13:16
    版主
  • CDrawTool负责响应鼠标事件。你可以用多态来重载CDrawTool更改对鼠标的控制逻辑

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP

         对鼠标的控制逻辑可以这么干,但是工具栏按钮的命令消息和界面更新消息如何映射呢?
    前无古人,后无来者
    2009年9月14日 1:32
  • 映射完了之后调用控制类

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年9月14日 2:07
    版主
  • 映射完了之后调用控制类

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP

          
          你是说定义一个控制基类,在扩展模块中定义一个派生类继承这个基类。创建工具栏时指定按钮ID,调用命令函数时就LoadLibray后再调用控制类的命令函数,是这样吗?

            

    前无古人,后无来者
    2009年9月14日 3:43