LOCAL void FullScreenView_OnPaint(HWND hDlg) /***********************************************************************/ { PAINTSTRUCT ps; RECT ClientRect; HDC hDC; hDC = BeginPaint( hDlg, &ps ); // if ( ps.fErase ) { // Just draw the background ClientRect = ps.rcPaint; DrawColorPatch( hDC, &ClientRect, GetActiveRGB(NULL), YES ); } EndPaint( hDlg, &ps ); }
int LinesProc( HWND hWindow, LPARAM lParam, UINT msg ) /************************************************************************/ { int x, y, fx, fy; LPOBJECT lpObject; RGBS rgb; LPFRAME lpFrame; STRING szOptions; static RGBS rgbLast; x = LOWORD(lParam); y = HIWORD(lParam); switch (msg) { case WM_CREATE: // The first mouse down message if (!ONIMAGE(x, y)) break; Display2File(&x, &y); if ( !ImgSelectObjectType( lpImage, x, y, YES/*bAllowBase*/, YES/*bAllowMovable*/, NO/*bAllowPlayable*/ ) ) break; if (!Retouch.hBrush) break; GetActiveRGB( &rgb ); if ( rgb.red != rgbLast.red || rgb.green != rgbLast.green || rgb.blue != rgbLast.blue ) { // if a color change, restuff the brush source OptionGetString( hOptions, iTool+1, szOptions ); lpFrame = TiffResource2Frame( hOptions, (LPSTR)MAKEINTRESOURCE(iTool+1) ); SetSimpleBrushSource( Retouch.hBrush, lpFrame, szOptions ); rgbLast = rgb; } Tool.bActive = YES; break; case WM_SETCURSOR: return( SetToolCursor( hWindow, NULL/*idMoveObject*/, ID_PLAY_OBJECT ) ); case WM_ACTIVATE: if (!lParam) // a deactivate { if (Retouch.hBrush) DestroySimpleBrush(Retouch.hBrush); Retouch.hBrush = NULL; } else { // an activate ( to re-create brush) if ( Tool.hRibbon ) SendMessage( Tool.hRibbon, WM_CONTROLENABLE, 1, 0L ); } break; case WM_LBUTTONDOWN: Tool.bActive = NO; if (ImgCountSelObjects(lpImage, NULL) == 1) lpObject = ImgGetSelObject(lpImage, NULL); else { fx = x; fy = y; Display2File( &fx, &fy ); lpObject = ImgFindSelObject(lpImage, fx, fy, NO); } if (!lpObject) break; if (!ImgEditInit(lpImage, ET_OBJECT, UT_DATA, lpObject)) break; if (!SimpleBrushBegin(hWindow, &lpObject->Pixmap, lpObject->rObject.left, lpObject->rObject.top, Retouch.hBrush)) break; ImgEditedObject(lpImage, lpObject, IDS_UNDOCHANGE, NULL); Tool.bActive = SimpleBrushActive(); /* fall through to WM_MOUSEMOVE */ case WM_MOUSEMOVE: // sent when ToolActive is on fx = x; fy = y; Display2File( &fx, &fy ); SimpleBrushStroke(fx, fy, x, y); break; case WM_LBUTTONUP: SimpleBrushEnd(NO); Tool.bActive = NO; break; case WM_LBUTTONDBLCLK: break; case WM_DESTROY: // The cancel operation message SimpleBrushEnd(NO); Tool.bActive = NO; break; } return(TRUE); }