CDC::EnumObjects

int EnumObjects(int nObjectType,int (CALLBACKEXPORT* lpfn)(LPVOID,LPARAM),LPARAM lpData);

返回值:指定由调用函数返回的最后的值。其意义由用户定义。

参数:
nObjectType指定对象类型。可取的值有OBJ_BRUSH或OBJ_PEN。
lpfn应用调用函数的例程地址。请参阅说明部分。
lpData指向应用提供的数据指针。该数据同对象信息一起传递给调用函数。

说明:
枚举设置设备上下文中的画笔和画刷。对给定类型的每一对象,所传递的调用函数与此对象的信息一起被传递。系统调用回调函数,直到没有对象或调用函数返回0。
要注意Microsoft Visual C++的一个新特点是当把函数传递给EnumObjects时仍可使用普通函数。传递给EnumObjects的地址是一个指向由EXPORT产生的函数的指针,并带有Pascal调用约定。在保护模式下,不必用Windows MakeProcInstance来创建函数或由FreeProcInstance函数来释放它。
也不必在应用模块定义文件的EXPORT语句中列出输出的函数,但可使用EXPORT函数修饰符,如:
int CALLBACK EXPORT Afunction (LPSTR,LPSTR);
使编译器产生适当的记录用于按名称而不是别名输出。这可满足大部分需要。在某些特定情况下,例如通过普通或带别名的输出,仍需要模块定义文件中的EXPORT语句。
要编译Microsoft Foundation 程序,一般使用/GA和/Ges编译程序选项。/GW编译程序选项不为Microsoft Foundation类使用(如果要使用Windows 的MakeProcInstance,应当将调用的函数指针从FARPROC移到API需要的类型去)。调用登记的接口现在是类型安全的(必须传递一个函数指针,它指向用于特定调用的函数)。
在返回Windows时,还应注意到所有的调用函数必须捕获到Microsoft Foundation异常,因为异常仍在调用函数范围之内。关于异常的更多信息,请参阅联机文档“Visual C++程序员指南”中的“异常”。

请参阅:::EnumObject