getobject

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1193665761703&lmt=1193665780&format=336x280_as&output=html&correlator=1193665761687&url=http%3A%2F%2Fwww.codeguru.cn%2Fpublic%2Fiframe%2Fwinapiiframe.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=1285758818.1193665762&ga_sid=1193665762&ga_hid=111695597&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_his=8&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency">     函数功能:该函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区。

    函数原型:int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject);

    参数:

    hgdiobj:指向感兴趣的图形对象的句柄,它可以是这样的一个句柄:一个逻辑位图、一个刷子、一种字体、一个调色板、笔或通过调用CreateDIBsection函数创建的与设备无关位图。

    cbBuffer:指定将要写到缓冲区的信息的字节数目。

    lpvObject:指向一个缓冲区的指针,该缓冲区将要检索指定图形对象的信息。

    下面列出的是缓冲区为每种图形对象类型可接收的信息和类型,可用hgdiobj来指定,写入*lpvObject: HBITMAP BITMAP。

    HBITMAP:如果cbBjffer被设置为sizeof(DIBSECTION)或sizeof(BITMAP),则从对GreatDIBSection函数的DIBSECTION调用中返回。

    HPALETTE:逻辑调色板入口数的WORD数目。

    HPEN:从对ExtCreatePen函数的LXTLOGPEN调用中返回。

    HPENLOGPEN; HBRUSH LOGBRUSH; HFONT LOGFONT

    如果lpvObject参数为Null,则函数返回值为指定图形对象需要把信息贮存到缓冲区的字节数目。

    返回值:如果函数调用成功,且lpvObject为一个有效指针,则返回值为贮存到缓冲区的字节数目;如果函数调用成功,且lprObject为Null,则返回值为需要容纳的贮存到缓冲区的信息字节数目;如果函数调用失败,则返回值为0。

    Windows NT:若想获得更多错误信息,可调用GetLastError函数。

    注释:lpvObject参数指向的缓冲区一定要足够大以接收图形对象的信息。

    如果hgdiobj标识一个由调用GreateDIBSection创建的位图,且指定的缓冲区足够大,则GetObject函数返回一个DIBSECTION结构。另外,DIBSECTION中的BITMAP结构中的bmBits元素含有一个指向位图位值的指针。

    如果hgdiobj标识了一个通过其他途径创建的位图,则GetObject只返回位图的宽、高和颜色格式信息,通过调用GetDIBits或GetBitmapBits函数可以得到位置的位值。

    如果hgdiobj标识了一个逻辑调色板,则GetObject检索一个2字节的整数,该整数指定调色板中的项数,函数不检索定义调色板的LOGPALETTE结构,为检索有关调色板项的信息,应用程序可以调用GetPaletteEntries函数。

    Windows CE:在Windows CE 1.0中,当用在DIB上中,GetObject总返回一个BITMAP。Windows CE 1.0不支持lpvObject参数的HPALETTE值。此函数在Windows CE 2.0与在Windows桌面上一样。

    速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

GetObject 函数在不同的编程环境和上下文中有着不同的用途和实现方式,主要分为以下几种情况: ### 1. 在自动化脚本和 COM 编程中的使用 在 Windows 环境中,特别是在与 COM(组件对象模型)交互时,`GetObject` 函数用于从文件中访问一个 Automation 对象。可以将由 `GetObject` 返回的对象赋值给对象变量,从而在脚本或程序中操作该对象。例如,可以通过该函数访问 CAD 文件中的对象: ```javascript var CADObject; CADObject = GetObject("C:\\CAD\\SCHEMA.CAD"); ``` 如果对象已注册为单个实例的对象,则无论执行多少次 `CreateObject`,都只能创建该对象的一个实例。若使用单个实例对象,当使用零长度字符串 (`""`) 语法调用时,`GetObject` 总是返回同一个实例,而若省略 `pathname` 参数,就会出错[^1]。 ### 2. 在图形编程中的使用 在 Windows GDI(图形设备接口)编程中,`GetObject` 是一个用于获取图形对象信息的函数。其函数原型如下: ```c int GetObject( HGDIOBJ hgdiobj, // handle to graphics object int cbBuffer, // size of buffer for object information LPVOID lpvObject // buffer for object information ); ``` 该函数用于从指定的图形对象中获取信息,例如位图、画笔、字体等。参数 `hgdiobj` 是图形对象的句柄,`cbBuffer` 是接收信息的缓冲区大小,`lpvObject` 是指向缓冲区的指针。返回值表示写入缓冲区的字节数[^2]。 ### 3. 在 SAP UI5 框架中的实现 在 SAP UI5 框架的 `Manifest.js` 文件中,`getObject` 函数用于通过给定的路径(字符串形式)从一个对象中获取其子成员的值。路径可以是以斜线(“/”)开始,也可以直接是对象的属性名。例如: ```javascript // 假设 obj 是一个嵌套对象 var obj = { "data": { "user": { "name": "John Doe" } } }; // 通过路径获取值 var value = getObject(obj, "/data/user/name"); // 返回 "John Doe" ``` 如果是以斜线开始的路径,该函数会递归地在对象中查找对应的属性值;如果直接是属性名,函数会直接返回该属性的值。在寻找路径时,代码还进行了一些错误处理,防止访问到非对象类型的属性,以及防止访问对象的原生属性[^5]。 ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值