WINDIFF.H
/******************************************************************************\ 
*       This is a part of the Microsoft Source Code Samples.  
*       Copyright 1993 - 1998 Microsoft Corporation. 
*       All rights reserved.  
*       This source code is only intended as a supplement to  
*       Microsoft Development Tools and/or WinHelp documentation. 
*       See these sources for detailed information regarding the  
*       Microsoft samples programs. 
\******************************************************************************/ 
 
/* 
 * WINDIFF.H 
 */ 
 
/* application-wide variables -------------------------------------*/ 
 
/* This is the section name in the win.ini file to which we 
 * write profile info 
 */ 
#define APPNAME "WinDiff" 
 
/* A gmem_init() heap shared by the app. call gmem_get to alloc. */ 
extern HANDLE hHeap; 
 
/* The instance handle for this app. Needed by anyone who uses resources 
 * such as dialogs 
 */ 
extern HINSTANCE hInst; 
 
extern HWND hwndClient; 
extern HWND hwndRCD; 
 
/* global option flags-------------------------------------------  */ 
 
/* Which files do we show in outline mode ? all, changed... */ 
extern int outline_include; 
 
/* Outline_include is an OR of the following */ 
#define INCLUDE_SAME            1 
#define INCLUDE_DIFFER          2 
#define INCLUDE_LEFTONLY        4 
#define INCLUDE_RIGHTONLY       8 
 
 
/* Do we ignore blanks during the line-by-line diff ? */ 
extern BOOL ignore_blanks; 
 
/* Which line numbers do we show - left original, right original or none ?*/ 
extern int line_numbers; 
 
/* What lines do we show in expand mode - all, left only, right only ? */ 
extern int expand_mode; 
 
/*--- colour scheme ----------------------------------------------  */ 
 
/* Outline */ 
extern DWORD rgb_outlinehi; 
 
/* Expand view */ 
extern DWORD rgb_leftfore; 
extern DWORD rgb_leftback; 
extern DWORD rgb_rightfore; 
extern DWORD rgb_rightback; 
extern DWORD rgb_mleftfore; 
extern DWORD rgb_mleftback; 
extern DWORD rgb_mrightfore; 
extern DWORD rgb_mrightback; 
 
/* Bar window */ 
extern DWORD rgb_barleft; 
extern DWORD rgb_barright; 
extern DWORD rgb_barcurrent; 
 
 
 
/* -- display layout constants---------------------------------------*/ 
 
/* Percentage of width of window taken by bar display (when visible) */ 
#define BAR_WIN_WIDTH   10 
 
/* Following are horizontal positions within the bar window, expressed 
 * in percent of the width of the bar window 
 */ 
#define L_POS_START     10      /* start of left position marker */ 
#define L_POS_WIDTH     5       /* width of left position marker */ 
#define R_POS_START     80      /* start of right position marker */ 
#define R_POS_WIDTH     5       /* width of right position marker */ 
 
#define L_UNMATCH_START 30      /* start of left bar for unmatched section */ 
#define L_UNMATCH_WIDTH 10      /* width of above */ 
#define R_UNMATCH_START 60      /* start of right bar for unmatch section */ 
#define R_UNMATCH_WIDTH 10      /* width of right unmatched section marker */ 
#define L_MATCH_START   30      /* start of left bar for matched section */ 
#define L_MATCH_WIDTH   10      /* width of left bar for matched section */ 
#define R_MATCH_START   60      /* start of right bar for matched section */ 
#define R_MATCH_WIDTH   10      /* width of right bar for matched section */ 
 
 
 
 
/* windiff.c functions */ 
void windiff_UI(BOOL bAttach); 
BOOL Poll(void);                /* true if abort pending */ 
void SetNames(LPSTR names); 
void SetStatus(LPSTR state); 
 
/* in bar.c */ 
BOOL InitBarClass(HINSTANCE hInstance); 
void BarDrawPosition(HWND hwndBar, HDC hdcIn, BOOL bErase); 
 
/*-- private messages -- */ 
/* Send this to the main window. Return value is the VIEW handle */ 
#define TM_CURRENTVIEW  WM_USER 
 
 
/* --- synchronisation ----------------------------------------- */ 
/* 
 * In WIN32 we spawn worker threads to do time-consuming actions. 
 * This causes a possible conflict with the UI thread when accessing the 
 * BUSY flag. 
 * 
 * To protect against this we have a critical section. The UI thread 
 * will get this before checking/changing the Busy flag, 
 * The worker thread will get this before Busy flag* changes. 
 * 
 */ 
 
CRITICAL_SECTION CSWindiff; 
 
#define WDEnter()       EnterCriticalSection(&CSWindiff); 
#define WDLeave()       LeaveCriticalSection(&CSWindiff);