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

 

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

songq

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值