IFS客户端窗口句柄有: hWndForm,hWndItem,hWndMDI,hWndParent,i_hWndFrame,i_hWndSelf,i_hWndParent 1.hWndForm: 为Centura(非IFS)内置Windows handle类型变量,在不同的上下文有不同的含义: 内部函数(Internal Function),窗口函数(Window Function),类函数(Class Function): hWndForm为调用该函数的顶层窗口的句柄; 菜单处理(Menu Actions): hWndForm 为包含该菜单的顶层窗口的句柄; 消息处理(Message Actions): hWndForm为接收该消息的顶层窗口的句柄;但child table例外,在它的消息里hWndForm为该子窗口的句柄. MDI窗口:在MDI函数,消息处理(message actions)以及菜单处理中hWndForm为最顶层MDI子窗口的句柄. 2.hWndItem:和hWndForm类似,但为当前窗口或控件的句柄; 3.hWndMDI:为Centura(非IFS)内置Windows handle类型变量,为当前MDI窗口的句柄,若没有则为空,对于IFS hWndMDI永远不为空; 4.hWndParent:为Centura(非IFS)内置Windows handle类型变量当前窗口的父窗口; 5.i_hWndFrame,i_hWndSelf,i_hWndParent:为IFS在cObjectRelationManager类定义的三个句柄, 分别是顶层窗口(仅包括DialogBox,Form,Table窗口以及子窗口)句柄,当前窗口句柄,父窗口句柄; 只适用于IFS框架定义的窗口或控件类型,即继承自cObjectRelationManager,一般的Centura的标准窗口或控件是不能使用这三个变量的; i_hWndFrame使用方法为[i_hWndFrame.窗体ID.子窗体],例如:i_hWndFrame.frmInventoryPart.dfsCode i_hWndSelf:为当前窗口句柄,根据上下文而变化,出现这样的代码时候,一般会报错:i_hWndSelf.frmInventoryPart.dfsCode 例如若在DataField内的,i_hWndSelf为DataField的句柄,i_hWndParent才为上级窗口的句柄; i_hWndParent:也根据调用的上下文而变,即同一环境中i_hWndParent=SalParentWindow(i_hWndSelf); 由于上面的差别所以使用QualifiedItemNameGet( i_hWndFrame )和QualifiedItemNameGet( i_hWndSelf )是不同的; 需要指明的是IFS窗体基本都继承自cObjectRelationManager, 所以hWndForm.frmInventoryPart.dfsCode相当于i_hWndFrame.frmInventoryPart.dfsCode,但一般使用后者; 以上"窗口"若未特别指明,含义包括DataField,ComboBox等控件; |