| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
BREW学习笔记1、可以用Visual Studio C++ 6.0或者.net来开发,具体使用可以参考brew文档,特别是.net的需要多一些步骤来设置工程的属性。 2、必须要有bid文件,放在和dll同一目录下, bid文件中包含的是brew应用程序的classid, 可以使用mif编辑器来生成 3、mif文件名要和工程文件名一致,而且要跟工程文件所在的目录放在同一级 4、资源编辑器会自动生成<文件名>.bar和<文件名>_res.h两个文件,并要放在和dll同一目录下。在程序中需要将_res.h包含进去 5、在_res.h头文件中除了定义的字符串、控件等资源外,还自动定义一个字串表示该资源文件名称。如:#define BREWMENU1_RES_FILE "brewmenu1.bar" 6、projectname.c中包含AEEAppGen.h和AEEModGen.h,另外根据具体应用中用到的接口加入相应的头文件,如用菜单的话加入AEEMenu.h等。 7、HandleEvent事件可以自行定义如:Mymenu_HandleEvent,要作为初始函数AEEClsCreateInstance中调用AEEApplet_New的参数传入,这样应用程序启动后就能进入该事件作为消息循环处理。 8、boolean AEEApplet_New(int16 nSize, AEECLSID clsID, IShell * pIShell, IModule * pIModule, IApplet **ppobj, AEEHANDLER pAppHandleEvent, PFNFREEAPPDATA pFreeAppData) 函数的ppobj是返回参数, *ppobj指向有效的AEEApplet结构 在实际开发中,一般自定义一个结构体,其中第一项必须是AEEApplet类型的变量,后边的变量可以将可能用的接口都封装起来,然后将该自定义结构体用于程序中。 例子: 定义结构体 typedef struct _CHelloBrewApp { AEEApplet a; // 强制写到第一项,这是必须的,因为AEEApplet_New函数返回的*ppobj是指向一个AEEApplet的一个指针,所以AEEApplet类型必须放在结构体首位。 AEERect m_rScreenRect; // Screen Rectangle IMenuCtl * m_pMenu; // Main Menu IMenuCtl * m_pList; // List Menu AEECallback m_rSaveReportCB; // Callback AEECallback cbkLookup; AEEDNSResult dnsresult; } CHelloBrewApp; 在初始化中使用 int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * pMod,void ** ppObj) { CHelloBrewApp * pApp=NULL; if(AEEApplet_New( sizeof(CHelloBrewApp), // 注意这里是结构体的大小 ClsId, // Our class ID pIShell, // Shell interface pMod, // Module instance (IApplet**)ppObj, // 返回指向AEEApplet的指针 (AEEHANDLER)BrewMenu_HandleEvent, // 自定义的事件处理函数 NULL)) // 没有释放函数 return(AEE_SUCCESS); pApp = ( CHelloBrewApp*) *ppObj; //强制转换并赋予CHelloBrewApp实例 return (EFAILED); } 9、error C2082: 形参“AEEClsCreateInstance”的重定义 ,这种错误一般是由于前边的函数声明部分有的没有用分号结束。 10、EVT_COMMAND是从各种控件发出的命令处理,如选择某个菜单项IDC_ADD_VIEW,那么EVT_COMMAND可能就是IDC_ADD_VIEW
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||