CAA没有提供可用的树形控件,但是CAA对MFC有很好的支持。因此可以通过获取CAA窗体句柄方式,动态挂入CtreeCtrl对象。
为此我们需要解决以下几个问题
1.如何获取窗口的句柄。
获取窗口的句柄目的是为了创建CtreeCtrl对象,当然在创建的同时也定义树形控件要挂在到窗口的哪个区域。
CAA中 CATDlgDialog集成的基类提供了GetWindowHandle()方法,该方法并没有记载到开发文档中,但是是可以直接使用的,它返回的是一个HANDLE对象对于创建CWnd对象已经足够了。
2.如何获取选择树形控件时发出的消息。
所有的CWnd派生的子类都能对CWnd里面的消息进行重写,也正是基于此方法,可以拦截鼠标选择树形控件时发出的消息。在重写消息方法里获取消息信息和鼠标信息进行比较就可以准确获取鼠标单击和双击树形控件的状态。
综上所述我们可以这样实现,创建一个继承CTreeCtrl的派生类CAACtreeCtrl,在CAACtreeCtrl里重写系统的消息方法,并处理WM_LBUTTONDOWN,WM_LBUTTONDBLCLK,WM_RBUTTONDOWN有用的消息。
以下展示通过该方式实现树形控件创建和3D预览实现效果。
CATIA二次开发-MFC树形控件实现
最新推荐文章于 2024-05-27 10:27:02 发布