您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > VS2010与PB10开发和使用PBNI-初步使用3
PBNI初步使用三(函数功能调用-代码优化)下面讲解如何使用VS2010开发PB10.5版本PBNI组件应用实例:在VS中创建一个f_add的函数,实现2个int类型的数值进行相加。PB调用和使用这个函数功能代码的优化。1优化和使用PBNIADD代码将项目管理中多余的文件进行删除,系统仅仅只是留下3个主要的文件。Stdafx.h,PBNIAdd.cpp和PBNIAdd.h这三个文件。如下图:stdafx,.h代码主要定义生成DLL文件的入口。代码如下:#pragmaonce#ifndefSTRICT#defineSTRICT#endif#ifndefWINVER#defineWINVER0x0400#endif#ifndef_WIN32_WINNT#define_WIN32_WINNT0x0400#endif#defineVC_EXTRALEAN//Excluderarely-usedstufffromWindowsheaders//PullinsupportforCommctrlv6#ifdef_UNICODE#ifdefined_M_IX86#pragmacomment(linker,/manifestdependency:\type='win32'name='Microsoft.Windows.Common-Controls'version='6.0.0.0'processorArchitecture='x86'publicKeyToken='6595b64144ccf1df'language='*'\)#elifdefined_M_IA64#pragmacomment(linker,/manifestdependency:\type='win32'name='Microsoft.Windows.Common-Controls'version='6.0.0.0'processorArchitecture='ia64'publicKeyToken='6595b64144ccf1df'language='*'\)#elifdefined_M_X64#pragmacomment(linker,/manifestdependency:\type='win32'name='Microsoft.Windows.Common-Controls'version='6.0.0.0'processorArchitecture='amd64'publicKeyToken='6595b64144ccf1df'language='*'\)#else#pragmacomment(linker,/manifestdependency:\type='win32'name='Microsoft.Windows.Common-Controls'version='6.0.0.0'processorArchitecture='*'publicKeyToken='6595b64144ccf1df'language='*'\)#endif#endifPBNIApp.h代码主要声明类和函数。代码无须变化,代码如下:classPBNIAdd:publicIPBX_NonVisualObject{public:PBNIAdd();virtual~PBNIAdd();PBXRESULTInvoke(IPB_Session*session,pbobjectobj,pbmethodIDmid,PBCallInfo*ci);intf_add(IPB_Session*,pbint,pbint);//Enumusedtoprovideentrypointsforeachmethodintheclass-thiscaseismAddenumMethodIDs{mAdd=0};private:virtualvoidDestroy();};点击PBNIApp.cpp代码主要声名定义和具体函数。之前对应dllmain.cpp合并在里面,代码如下://PBNIADD.cpp:定义DLL应用程序的导出函数。//ImplementtherequiredInvokemethod#includepbext.h#includestdafx.h#includePBNIAdd.h#includetchar.hBOOLAPIENTRYDllMain(HMODULEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:caseDLL_THREAD_ATTACH:caseDLL_THREAD_DETACH:caseDLL_PROCESS_DETACH:break;}returnTRUE;}PBXEXPORTLPCTSTRPBXCALLPBX_GetDescription(){staticconstTCHARclassDesc[]={_T(classn_pbniaddfromnonvisualobject\n)\_T(functionintf_add(inta,intb)\n)\_T(endclass\n)};return(LPCTSTR)classDesc;}PBXEXPORTPBXRESULTPBXCALLPBX_CreateNonVisualObject(IPB_Session*pbSession,pbobjectpbobj,LPCSTRxtraName,IPBX_NonVisualObject**nvobj){LPCTSTRmyclassname=_T(n_pbniadd);if(_tcscmp(xtraName,myclassname)==0){*nvobj=newPBNIAdd();returnPBX_OK;};*nvobj=NULL;returnPBX_E_NO_SUCH_CLASS;};PBXRESULTPBNIAdd::Invoke(IPB_Session*Session,pbobjectobj,pbmethodIDmid,PBCallInfo*ci){//ifthemethodtocallisf_addif(mid==mAdd){intsum=f_add(Session,ci-pArgs-GetAt(0)-GetInt(),ci-pArgs-GetAt(1)-GetInt());ci-returnValue-SetInt(sum);}returnPBX_OK;}//constructoranddestructorPBNIAdd::PBNIAdd(){}PBNIAdd::~PBNIAdd(){}//implementtheclass’sf_addmethodintPBNIAdd::f_add(IPB_Session*session,pbintarg1,pbintarg2){returnarg1+arg2;}//ImplementtherequiredDestroymethodvoidPBNIAdd::Destroy(){deletethis;}2设置PBNIAdd的项目属性:在解决方案资源管理器的PBNIADD项目上右击,弹出右键菜单选择属性,在配置属性的常规页中设置如下:配置选择所有配置,平台为win32,平台工具集为V100,字符集为多字节字符集。预编译,设置不使用预编译头。如图:3代码编译编译后会按照设置的编译属性,放去Debug目录下4PB10进行引用和调用选择PBNIADD.dll导入成功后创建一个窗口,对对象进行调试分析窗口名字为w_testPB对应窗口的测试代码如下:应用打开测试窗口需要注意把PBNIADD.dll复制到PB对应的PBL目录简化代码的目的:为下一步更好的完善和调用PBNI的多对象和多功能做好准备,并实际了解清楚编译一个PBNI需要用到那些文件和实际需要引用的文件。PBNI的程序编写可以主要看为3个文件,其中stdafx.h定义Dll文件入口,PBNIAdd.h定义类的说明,PBNIAdd.cpp为实现类的主要代码。
本文标题:VS2010与PB10开发和使用PBNI-初步使用3
链接地址:https://www.777doc.com/doc-2866767 .html