• 关于XTToolkitPro中DialogPanes无法响应OnDockingPaneNotify事件的解决办法。


         由于项目需要用到Xtreme ToolkitPro 2008 Vol 2 (12.1.1)中的Pane,即类似IDE里的面板。

    看了套件自带的DialogPanes实例,于是自己建立一个对话框的工程进行测试,但发现就是创建不出来。

    开发环境:WindowsXP + VC6 + Xtreme ToolkitPro 2008 Vol 2 (12.1.1)

    出现问题:

         在对话框的OnInitDialog事件中建立pane,但是系统不调用 OnDockingPaneNotify 事件,界面上也不显示面板。

    搜索了下网络,其中一个有价值的帖子是说由于建立面板的ID号与程序中的菜单ID重复,而又有响应菜单的OnCommand函数,所以

    不调用OnDockingPaneNotify,更改ID号后解决。

    但我自己检查了后发现我的ID并没有重复,所以排除了,仔细查看组件自带的例子,发现它死活就是能出来,而我的就是不行。。。

    最后又建立了一个工程,照着一份份代码粘贴,发现我的工程一摸一样,就是少了个OnSize事件。

    后来也添加了该事件,把例子的代码复制过去竟然OK了。最后才发现界面必须有OnSize事件响应,

    而且在事件里必须有下列代码:

    void CPaneDlg::OnSize(UINT nType, int cx, int cy)
    {
     CDialog::OnSize(nType, cx, cy);
     
     // 必须有下列代码

     RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, 0, 0, &rcClient);
     RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &rcClient, &rcClient);

    }

    症结:OnSize事件中重新定位各个控制条,此时才会触发OnDockingPaneNotify事件。

  • 相关阅读:
    程序的机器级表示(一)
    virtual memory(1)
    Python定义参数数量可变的method的问题
    存储器结构层次(四)
    CAShapeLayer
    cell
    远程服务器推送
    keyboad
    search搜索
    Cocoopod
  • 原文地址:https://www.cnblogs.com/jhkdiy/p/2381722.html
Copyright © 2020-2023  润新知