关于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事件。

posted @ 2012-03-06 13:27  jhkdiy  阅读(614)  评论(0编辑  收藏  举报