PAINT.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * PAINT.C
- * GizmoBar Version 1.01
- *
- * Contains any code related to GizmoBar visuals, primarily
- * the WM_PAINT handler.
- *
- * Copyright (c)1993-1996 Microsoft Corporation, All Rights Reserved
- *
- * Kraig Brockschmidt, Software Design Engineer
- * Microsoft Systems Developer Relations
- *
- * Internet : kraigb@microsoft.com
- * Compuserve: >INTERNET:kraigb@microsoft.com
- */
- #include <windows.h>
- #include "gizmoint.h"
- //In GIZMO.C
- extern TOOLDISPLAYDATA tdd;
- /*
- * GizmoBarPaint
- *
- * Purpose:
- * Handles all WM_PAINT messages for the control and paints either
- * the entire thing or just one GizmoBar button if pGB->pGizmoPaint
- * is non-NULL.
- *
- * Parameters:
- * hWnd HWND Handle to the control.
- * pGB PGIZMOBAR control data pointer.
- *
- * Return Value:
- * None
- */
- void GizmoBarPaint(HWND hWnd, PGIZMOBAR pGB)
- {
- PAINTSTRUCT ps;
- RECT rc;
- HDC hDC;
- HBRUSH hBr=NULL;
- HPEN hPen=NULL;
- hDC=BeginPaint(hWnd, &ps);
- GetClientRect(hWnd, &rc);
- /*
- * The only part of the frame we need to draw is the bottom line,
- * so we inflate the rectangle such that all other parts are
- * outside the visible region.
- */
- hBr =CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
- if (NULL!=hBr)
- SelectObject(hDC, hBr);
- hPen=CreatePen(PS_SOLID, 1, GetSysColor(COLOR_WINDOWFRAME));
- if (NULL!=hPen)
- SelectObject(hDC, hPen);
- Rectangle(hDC, rc.left-1, rc.top-1, rc.right+1, rc.bottom);
- /*
- * All that we have to do to draw the controls is start through
- * the list, ignoring anything but buttons, and calling BTTNCUR's
- * UIToolButtonDraw for buttons. Since we don't even have to
- * track positions of things, we can just use an enum.
- */
- GizmoPEnum(&pGB->pGizmos, FEnumPaintGizmos, (DWORD)(LPTSTR)&ps);
- //Clean up
- EndPaint(hWnd, &ps);
- if (NULL!=hBr)
- DeleteObject(hBr);
- if (NULL!=hPen)
- DeleteObject(hPen);
- return;
- }
- /*
- * FEnumPaintGizmos
- *
- * Purpose:
- * Enumeration callback for all the gizmos we know about in order to
- * draw them.
- *
- * Parameters:
- * pGizmo PGIZMO to draw.
- * iGizmo UINT index on the GizmoBar of this gizmo.
- * dw DWORD extra data passed to GizmoPEnum, in our
- * case a pointer to the PAINTSTRUCT.
- *
- * Return Value:
- * BOOL TRUE to continue the enumeration, FALSE
- * otherwise.
- */
- BOOL WINAPI FEnumPaintGizmos(PGIZMO pGizmo, UINT iGizmo, DWORD dw)
- {
- LPPAINTSTRUCT pps=(LPPAINTSTRUCT)dw;
- RECT rc, rcI;
- //Only draw those marked for repaint.
- if ((GIZMOTYPE_DRAWN & pGizmo->iType))
- {
- SetRect(&rc, pGizmo->x, pGizmo->y
- , pGizmo->x+pGizmo->dx, pGizmo->y+pGizmo->dy);
- //Only draw gizmos in the repaint area
- if (IntersectRect(&rcI, &rc, &pps->rcPaint))
- {
- UIToolButtonDrawTDD(pps->hdc, pGizmo->x, pGizmo->y
- , pGizmo->dx, pGizmo->dy, pGizmo->hBmp
- , pGizmo->cxImage, pGizmo->cyImage, pGizmo->iBmp
- , (UINT)pGizmo->uState, &tdd);
- }
- }
- return TRUE;
- }