一旦应用程序创建显示器或打印机设备上下文,它可以开始在相关联的设备上绘图,或者在存储器设备上下文的情况下,它可以开始绘制存储在存储器中的位图。但是,在绘图开始之前,有时绘图正在进行时,通常需要用新对象来替换默认对象。
应用程序可以通过调用GetCurrentObject和GetObject函数来检查默认对象的属性。GetCurrentObject函数返回一个标识当前笔,画笔,调色板,位图或字体的句柄,并且GetObject函数初始化包含该对象属性的结构。
一些打印机提供常驻笔,画笔和字体,可用于提高应用程序的绘图速度。可以使用两个函数枚举这些对象:EnumObjects和EnumFontFamilies.如果应用程序必须枚举驻留笔或画笔,可以调用EnumObjects函数来检查相应的属性。如果应用程序必须枚举常驻字体,它可以调用EnumFontFamilies函数(也可以枚举GDI字体)。
一旦应用程序确定默认对象需要替换,它将通过调用以下创建函数之一创建一个新对象。
这些函数中的每一个都返回一个标识新对象的句柄。应用程序检索句柄后,必须调用SelectObject函数来替换默认对象。但是,应用程序应保存标识默认对象的句柄,并在不再需要时使用此句柄替换新对象。当应用程序使用新对象完成绘制时,它必须通过调用SelectObject功能来恢复默认对象,并通过调用DeleteObject功能删除新对象。没有删除对象会导致严重的性能问题。