BREW学习笔记 - IDIB 接口(一)

IDIB
说明:
此结构用于定义 BREW 设备无关位图的格式。
IDIB 是一种结构和接口。 IDIB 继承了 IBitmap 的全部成员函数,因此通过类型转换,IDIB 可用作 IBitmap。 (IDIB_TO_IBITMAP 内联函数用于实现安全的类型转换。) 与其它 BREW 接口不同,IDIB 还包含公用数据成员。 这些数据成员可用于高效读取或修改图像数据。

通常,应用程序通过使用ClassID AEECLSID_DIB 调用 IBITMAP_QueryInterface() 来从 IBitmap 指针获取 IDIB 指针。 并非所有的 IBitmap 类都支持 IDIB。在不支持的情况下,QueryInterface() 将返回错误代码。 如果成功,则返回 IDIB 指针,调用者在使用完该指针之后,必须将其释放。

位图由二维像素数组构成。 IDIB 包含指示像素在内存中所处位置,以及如何解释这些像素值的成员。
定义:
OBJECT(IDIB) {
   AEEVTBL(IDIB)  *pvt;
   IQueryInterface * pPaletteMap;
   byte *            pBmp;
   uint32 *          pRGB;
   NativeColor       ncTransparent;
   uint16            cx;
   uint16            cy;
   int16             nPitch;
   uint16            cntRGB;
   uint8             nDepth;
   uint8             nColorScheme;
   uint8             reserved[6];
}
详参API文档。

 

IDIB_TO_IBITMAP()
说明:
此函数提供从 IDIB 接口指针到 IBitmap 接口指针进行安全的类型转换。 此函数应该用于将 IDIB 接口传递给 IBitmap 函数时。 由于编译器将验证指针类型,所以它比简单转换更安全。
原型:
__inline IBitmap *IDIB_TO_IBITMAP
(
const IDIB *pIDIB
)


IBITMAP_QueryInterface()
此函数继承于 IQI_QueryInterface()。

 

IQI_QueryInterface()
说明:
此方法用于向对象请求其它的 API 合约。
原型:
int IQI_QueryInterface
(
IQueryInterface *po,
AEECLSID idReq,
void **ppo
)
参数:
po: 指向对象的指针
idReq: 对象显露的所请求ClassID ppo: (out) 返回的对象。 由此方法填充

以上函数的示例代码如下:

 

GETAPPINSTANCE()
说明:
此函数用于返回当前正在执行的小程序的 IApplet 实例。 它在所有的 BREW API 调用、回调和事件中均有效。
原型:
IApplet *GETAPPINSTANCE
(
void
)

参数:

返回值:
返回指向当前正在执行的小程序的 IApplet 指针。 

 

IDISPLAY_UpdateEx()
说明:
如果目标位图为设备位图,此函数可用于更新屏幕。 如果将 bDefer 标记设置为 true,屏幕将立即刷新(更新)。 如果将 bDefer 标记设置为 false,更新消息公布到 UI 任务队列中,因此
在更新屏幕前要允许所有绘制完成操作。

例如以下伪代码段:
1.DrawText;
2.BitBlt;
3.UpdateEx;
将确保所有绘制操作完成后立即更新屏幕。
原型:
void IDISPLAY_UpdateEx
(
IDisplay* po,
boolean bDefer
)
参数:
po:[in]: 指向要更新的 IDisplay 接口对象的指针。
bDefer: [in]: 指明是要立即更新还是延迟更新屏幕的布尔标记。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值