将结构的位址传递给CreatePenIndirect结构就可以建立画笔了:
注意,CreatePen和CreatePenIndirect函式不需要装置内容代号作为参数。这些函式建立与装置内容没有联系的逻辑画笔。直到呼叫SelectObject之後,画笔才与装置内容发生联系。因此,可以对不同的设备(如萤幕和印表机)使用相同的逻辑画笔。
下面是建立、选择和删除画笔的一种方法。假设您的程式使用三种画笔-一种宽度为1的黑画笔、一种宽度为3的红画笔和一种黑色点式画笔,您可以先定义三个变数来存放这些画笔的代号:
在处理WM_CREATE期间,您可以建立这三种画笔:
在处理WM_PAINT期间,或者是在拥有一个装置内容有效代号的任何时间里,您都可以将这三个画笔之一选进装置内容并用它来画线:
画线函式
其他画线函式
在处理WM_DESTROY期间,您可以删除您建立的三种画笔:
这是建立、选择和删除画笔最直接的方法。但是您的程式必须知道执行期间需要哪些逻辑画笔,为此,您可能想要在每个WM_PAINT讯息处理期间建立画笔,并在呼叫EndPaint之後删除它们(您可以在呼叫EndPaint之前删除它们,但是要小心,不要删除装置内容中目前选择的画笔)。
您可能还希望随时建立画笔,并将CreatePen和SelectObject呼叫组合到同一个叙述中:
现在再开始画线,您将使用一个红色虚线画笔。在画完红色虚线之後,可以删除画笔。糟了!由於没有保存画笔代号,怎么才能删除这些画笔呢?不要紧,请记住,Se