NX二次开发之Block UI

Block UI回调函数
对于Block ui中按钮控件,如OK 或apply 按钮操作,使用了回调函数,与mfc对话框程序不同,BLOCK UI 无法任意定义和添加回调函数,系统只有给定的回调函数,分别对应不同事件。大多数情况下编写对话框起到的作用是收集用户的输入,通常只用到OK 与APPLY回调函数即可;也可在Update回调函数中对用户输入的参数进行预先的检查和判断,同时对添加的按钮控件通过判断ID,显示或执行点击按钮后的结果。(不用担心回调函数的注册)
下面是对回调函数的说明:
Filter选择过滤 :当鼠标停留在被选对象上,可能进行选择时被激活,对象是否高亮取决于回调函数的取值。该回调函数只能用于选择集的应用。
返回值:Integer
Update更新对话框:当用户改变了对话框中的值时被激活
返回值:integer
OK/Apply :用户点击OK被激活
cancel :当用户单击被激活、
initialize 初始化:函数在对话框初始化的时候被激活,可以在该函数中进行对话框初始参数的设置,没有返回值
Dialog show 对话框显示:在对话框被创建及初始化后被激活,此时对话框还没显示出来
Focus Notify 焦点改变 :该函数只被哪些无法进行键盘输入的块使用,被激活
Keyboard Focus Notify键盘输入 :该函数只能允许键盘输入的块使用。

制作者 1,乐清*梅雷 部分内容参考百度QQ:1821117007 一共大概花了15个小时翻译以及制作。 2,彭辅军,网名:小白鼠,QQ:3243729373 二次开发QQ群:331643674 在梅雷基础上增加了内容,一共大概花了20个小时翻译以及制作。 本帮助文档可复制,可传播,但需要保留制作者信息,谢谢! 其中大部分内容测试比对过,部分没有进行测试比对效果。请以实际效果为准。本文只做参考。 注:由于BlockUI更新比较频繁,各版本之间会存在差异,有些版本的控件的属性名并没有那么多,或者此帮助文件并没有列进去,那么可以通过下面方法查看当前版本某控件的所有的属性名和类型: void get_block_ui_type_name(NXOpen::BlockStyler::UIBlock* BLOCK_UI_name) { Session*theSession=NXOpen::Session::GetSession(); ListingWindow*lw=theSession->ListingWindow(); lw->Open(); NXOpen::BlockStyler::PropertyList::ListMode mode1 = BLOCK_UI_name->GetProperties()->Mode(); if (mode1==BlockStyler::PropertyList::ListModeIndexed) { lw->WriteLine("ListMode:ListModeIndexed"); } else { lw->WriteLine("ListMode:ListModeNamed"); } int length = BLOCK_UI_name->GetProperties()->Length(); char info[100]; sprintf(info,"数量:%d",length); lw->WriteLine(info); std::vectorarray_nxstr = BLOCK_UI_name->GetProperties()->GetPropertyNames(); for (int i=0;iWriteLine(); BlockStyler::PropertyList::PropertyType type = BLOCK_UI_name->GetProperties()->GetPropertyType(array_nxstr[i]); if(type==0) lw->WriteLine("类型是:String 名称:"+array_nxstr[i]); else if(type==1) lw->WriteLine("类型是:Double 名称:"+array_nxstr[i]); else if(type==2) lw->WriteLine("类型是:Logical 名称:"+array_nxstr[i]); else if(type==3) lw->WriteLine("类型是:Integer 名称:"+array_nxstr[i]); else if(type==4) lw->WriteLine("类型是:Enum 名称:"+array_nxstr[i]); else if(type==5) lw->WriteLine("类型是:Strings 名称:"+array_nxstr[i]); else if(type==6) lw->WriteLine("类型是:UIBlock 名称:"+array_nxstr[i]); else if(type==7) lw->WriteLine("类型是:Point 名称:"+array_nxstr[i]); else if(type==8) lw->WriteLine("类型是:Vector 名称:"+array_nxstr[i]); else if(type==9) lw->WriteLine("类型是:Bits 名称:"+array_nxstr[i]); else if(type==10) lw->WriteLine("类型是:Tagged Object 名称:"+array_nxstr[i]); else if(type==11) lw->WriteLine("类型是:Array 名称:"+array_nxstr[i]); else if(type==12) lw->WriteLine("类型是:Integer 2d-Matrix 名称:"+array_nxstr[i]); else if(type==13) lw->WriteLine("类型是:Double 2d-Matrix 名称:"+array_nxstr[i]); else if(type==14) lw->WriteLine("类型是:Tagged Object 2d-Matrix 名称:"+array_nxstr[i]); else if(type==15) lw->WriteLine("类型是:Integer Vector 名称:"+array_nxstr[i]); else if(type==16) lw->WriteLine("类型是:Double Vector 名称:"+array_nxstr[i]); else if(type==17) lw->WriteLine("类型是:Tagged Object Vector 名称:"+array_nxstr[i]); else if(type==18) lw->WriteLine("类型是:File 名称:"+array_nxstr[i]); else if(type==19) lw->WriteLine("类型是:Selection Filter 名称:"+array_nxstr[i]); else if(type==20) lw->WriteLine("类型是:Undefined 名称:"+array_nxstr[i]); } } //下面是几个示例:控件的值的获取 。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值