DLGEXTRN.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.
\******************************************************************************/

/****************************** Module Header *******************************
* Module Name: dlgextrn.h
*
* External declarations for global variables.
*
****************************************************************************/

extern HANDLE ghInst; /* Application instance handle. */
extern HMENU ghMenuMain; /* Main menu handle. */
extern PRESLINK gprlHead; /* Head of the linked list of resources.*/
extern CURRENTDLG gcd; /* Describes the current dialog. */
extern HPEN hpenDarkGray; /* A dark gray pen. */
extern HANDLE ghAccTable; /* The accelerator table handle. */
extern INT gMenuSelected; /* Currently selected menu item. */
extern HBITMAP ghbmDragHandle; /* Handle for the drag handle bitmap. */
extern HBITMAP ghbmDragHandle2; /* Handle for hollow drag handle bitmap.*/
extern HDC ghDCMem; /* Memory DC for drawing bitmaps. */
extern INT gCurTool; /* Currently selected tool. */
extern PWINDOWCLASSDESC gpwcdCurTool; /* Describes current tool. */
extern BOOL gfToolLocked; /* TRUE if a tool is locked down. */
extern PCUSTLINK gpclHead; /* Head of custom control linked list. */
extern INT gidCurrentDlg; /* Zero, or res id of DlgEdit dlg shown.*/
extern ORDINAL gordIcon; /* Ordinal for the editor's W_ICON icon.*/

/*
* Bitmap handles for the up and down W_NOTHING (pointer) tool bitmaps.
*/
extern HBITMAP ghbmPointerToolUp;
extern HBITMAP ghbmPointerToolDown;

/*
* External declarations for the Windows variables that contain
* command line information.
*/
extern INT __argc;
extern CHAR **__argv;

/*-- Initialized "Preferences" Data ------------------------------------*/
extern INIENTRY gaie[]; /* Initialization data desc. structure. */
extern BOOL gfHexMode; /* TRUE if in "hex" mode. */
extern BOOL gfTranslateMode; /* TRUE if in "translate" mode. */
extern BOOL gfShowToolbox; /* TRUE if Toolbox is to be shown. */
extern BOOL gfUseNewKeywords; /* FALSE to only use "CONTROL" keyword. */
extern INT gcxGrid; /* Current X grid. */
extern INT gcyGrid; /* Current Y grid. */
extern INT gxMargin; /* Top/bottom margin. */
extern INT gyMargin; /* Left/right margin. */
extern INT gxSpace; /* Horizontal control spacing. */
extern INT gySpace; /* Vertical control spacing. */
extern INT gxMinPushSpace; /* Minimum horizontal button spacing. */
extern INT gxMaxPushSpace; /* Maximum horizontal button spacing. */
extern INT gyPushSpace; /* Vertical button spacing. */

extern TCHAR szAppPos[]; /* App window's position keyname. */
extern TCHAR szTBPos[]; /* Toolbox window's position keyname. */
extern TCHAR szCustomDLL[]; /* Section name for DLL custom cntls. */

/*-- Sundry Handles.----------------------------------------------------*/
extern HWND hwndStatus; /* Status ribbon window handle. */
extern HWND ghwndToolbox; /* Toolbox window handle. */
extern HWND ghwndTestDlg; /* Handle of the Test Mode dialog. */
extern HWND ghwndMain; /* Main application window. */
extern HWND ghwndSubClient; /* The "fake" client area. */
extern HWND ghwndTrackOver; /* Window being tracked over. */

/*-- Some System constants.---------------------------------------------*/
extern INT gcxSysChar; /* Pixel width of system font char box. */
extern INT gcySysChar; /* Pixel height of system font char box.*/
extern INT gcyBorder; /* System height of a border. */
extern INT gcxPreDragMax; /* Max X mouse move during pre-drag. */
extern INT gcyPreDragMax; /* Max Y mouse move during pre-drag. */
extern INT gmsecPreDrag; /* The milliseconds that pre-drag lasts.*/
extern INT gcyPixelsPerInch; /* Vertical pixels/inch of system. */
extern INT gcyStatus; /* Saves height of the status window. */

/*-- Some state variables.----------------------------------------------*/
extern INT gState; /* Has the editor "state" or mode. */
extern BOOL gfResChged; /* Tell if RES has changed */
extern BOOL gfIncChged; /* Tell if include has changed */
extern BOOL gfDlgChanged; /* TRUE if current dialog has changed. */
extern INT gcSelected; /* Count of selected windows. */
extern BOOL gfTestMode; /* TRUE if in "test" mode. */
extern BOOL gfDisabled; /* TRUE if editing is disabled for now. */
extern BOOL gfEditingDlg; /* TRUE means a dlg is picked to edit. */
extern BOOL gfDlgSelected; /* TRUE if the dialog has the selection.*/
extern RECT grcMinDialog; /* Minimum tracking size of the dialog. */
extern RECT grcDlgClient; /* Rectangle of the dialogs "client". */
extern POINT gptCursorOffset; /* Offset from ctrl origin to pointer. */
extern RECT grcSelected; /* Rectangle around selected controls. */
extern RECT grcCopy; /* Rect around controls being copied. */
extern RECT grcTrackDU; /* Tracking rect when dragging a control*/
extern RECT grcTrackWin; /* Track rect in window units. */
extern BOOL gfTrackRectShown; /* TRUE if track rect is visible. */
extern HDC ghDCTrack; /* Clip DC used when tracking. */
extern INT gHandleHit; /* Current drag handle being tracked. */
extern INT gnOverHang; /* Maximum overhang during the drag. */
extern PRES gpResCopy; /* Copy of dialog/controls. */

/*-- CTYPE linked lists.------------------------------------------------*/
extern NPCTYPE npcHead; /* Linked List of controls. */
extern INT cWindows; /* Number of Controls in pctype list. */
extern NPCTYPE gnpcSel; /* The currently selected control. */

/*-- Cursors used by editor.--------------------------------------------*/
extern HCURSOR hcurArrow; /* Normal arrow cursor. */
extern HCURSOR hcurWait; /* User Wait cursor, Hourglass. */
extern HCURSOR hcurOutSel; /* Outline selection cursor. */
extern HCURSOR hcurMove; /* System "Move" cursor. */
extern HCURSOR hcurInsert; /* Insert cursor for Order/Group dialog.*/
extern HCURSOR hcurDropTool; /* Cursor for when dropping new ctrls. */
extern HCURSOR hcurSizeNESW; /* System sizing "NESW" cursor. */
extern HCURSOR hcurSizeNS; /* System sizing "NS" cursor. */
extern HCURSOR hcurSizeNWSE; /* System sizing "NWSE" cursor. */
extern HCURSOR hcurSizeWE; /* System sizing "WE" cursor. */
extern HBITMAP hbmTabStop; /* Bitmap for showing WS_TABSTOP style. */
extern HBITMAP hbmTabStopSel; /* Selected version of the above. */

/*-- Window Class Strings.----------------------------------------------*/
extern TCHAR szMainClass[]; /* Application window class. */
extern TCHAR szDragClass[]; /* Class for drag handle windows. */
extern TCHAR szSubClientClass[];/* Short client area window class. */
extern TCHAR szToolboxClass[]; /* Toolbox window class. */
extern TCHAR szToolBtnClass[]; /* Toolbox button window class. */
extern TCHAR szCustomClass[]; /* Our custom emulator class. */

/*-- Miscellaneous variables.-------------------------------------------*/
extern UINT fmtDlg; /* The Dialog Clipboard format */
extern TCHAR szEmpty[]; /* An empty string. */
extern HHOOK ghhkMsgFilter; /* Hook for message filter func. */

/*-- Buffers.-----------------------------------------------------------*/
extern TCHAR szFullResFile[]; /* Full resource file name */
extern LPTSTR pszResFile; /* Points to resource file name */
extern TCHAR szFullIncludeFile[];/* Full include file name */
extern LPTSTR pszIncludeFile; /* Points to include file name */
extern TCHAR gszHelpFile[]; /* Path to the help file. */

/*
* Write buffer and index into it. This buffer is used by several
* sections to write out the different files. Note that only one
* file can be written out at a time using these globals.
*/
extern TCHAR gachWriteBuffer[]; /* Buffer for written file data. */
extern INT cbWritePos; /* Pointer into gachWriteBuffer. */

/*-- Include Data.------------------------------------------------------*/
extern NPLABEL plInclude; /* Pointer to Include data */
extern NPLABEL plDelInclude; /* Pointer to deleted includes */

/*
* Describes each window class. Indexed by the W_ defined constants.
*/
extern WINDOWCLASSDESC awcd[];

/* Map low word of button control style to button type (W_). */
extern INT rgmpiClsBtnType[];

/* Map low word of Static Control Style to static type. */
extern INT rgmpiClsStcType[];

extern CLASSSTYLEDESC acsd[];

/*
* Message box messages, for the Message() function.
*/
extern MESSAGEDATA gamdMessages[];

extern HELPMAP gahmapMenu[]; /* Maps menu ids to their help context. */
extern HELPMAP gahmapDialog[]; /* Maps dlg ids to their help context. */

extern LANGTABLE gaLangTable[]; /* Table of languages. */
extern INT gcLanguages; /* Count of languages in the table. */