根据结构创建刷子的说明:
typedef struct tagLOGBRUSH { UINT lbStyle; // 画刷的类型 COLORREF lbColor; // 颜色 LONG lbHatch; // 填充风格 } LOGBRUSH, *PLOGBRUSH;
类型是可选的,有BS_SOLID,BS_HATCHED,BS_PATTERN和BS_HOLLOW四种类型。
方法一:首先计算窗口大小,将结果放入一个矩形结构rect中,然后利用矩形填充函数FillRect填充。
根据前面的研究,得到窗口矩形大小有一种比较简便的方法,如果窗口大小改变,就会发送WM_SIZE消息,其中lParam的低字节存放宽,高字节存放高,分离就会得到窗口的大小。一旦得到窗口大小,就可以调用FillRect函数填充,问题解决!
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps ; static RECT rect ;//矩形变量存储用户区窗口的坐标,尤其是右下角的坐标 static HBRUSH hBrush;//定义一个刷子对象 switch (message) { case WM_SIZE://窗口改变大小发送的消息 rect.right=LOWORD(lParam);//宽 rect.bottom=HIWORD(lParam);//高 return 0; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; hBrush=CreateSolidBrush(RGB(0,0,0));//自定义刷子 FillRect(hdc,&rect,hBrush);//刷子填充矩形 EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: DeleteObject(hBrush);//删除刷子 PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam); }