COSMO.H

/* 
* COSMO.H
*
* Definitions and function prototypes for the OLE Cosmo Server.
*
* Copyright(c) Microsoft Corp. 1992-1994 All Rights Reserved
* Win32 version, January 1994
*/

#include "polyline.h"

//Resource identifiers.
#define IDR_MENU 1
#define IDR_ACCELERATORS 1
#define IDD_ABOUT 1

//POLYLINE Window ID
#define ID_POLYLINE 10


//Menu command identifiers.
#define IDM_FILENEW 100
#define IDM_FILEOPEN 101
#define IDM_FILESAVE 102
#define IDM_FILESAVEAS 103
#define IDM_FILEIMPORT 104
#define IDM_FILEEXIT 110

#define IDM_EDITUNDO 200
#define IDM_EDITCUT 201
#define IDM_EDITCOPY 202
#define IDM_EDITPASTE 203

#define IDM_HELPABOUT 300


//File-related string lengths.
#define CCHPATHMAX 256
#define CCHFILENAMEMAX 15



/*
* CSTRINGS is number of strings to load from the stringtable.
* CCHSTRINGMAX is the maximum length that any string is allowed.
*
* What will happen is that CSTRINGS*CCHSTRINGMAX is allocated to begin
* with and the stringtable is loaded into that space, Only using what's
* required for each string. After that, the space is reallocated to
* be as small as possible.
*/

#define CSTRINGS 30
#define CCHSTRINGMAX 80



//String ID values. Keep in SEQUENTIAL order and use 0-n
#define IDS_CAPTION 0
#define IDS_CLASSCOSMO 1
#define IDS_CLASSPOLYLINE 2
#define IDS_FILEDIRTY 3
#define IDS_DEFEXT 4
#define IDS_FILEOPENFILTER 5
#define IDS_FILEOPEN 6
#define IDS_FILESAVEAS 7
#define IDS_FILEIMPORT 8
#define IDS_FULLNAME 9
#define IDS_FIGURE 10
#define IDS_DOTEXT 11
#define IDS_MODULE 12
#define IDS_UNTITLED 13
#define IDS_EMPTY 14

#define IDS_VERBEDIT 15
#define IDS_UPDATE 16
#define IDS_SAVE 17
#define IDS_SAVEAS 18
#define IDS_SAVECOPYAS 19
#define IDS_EXIT 20
#define IDS_EXITANDRETURN 21
#define IDS_EMBEDDING 22
#define IDS_NATIVE 23
#define IDS_DATAFORMATS 24
#define IDS_STDFILEEDITING 25
#define IDS_OWNERLINK 26
#define IDS_OBJECTLINK 27

#define IDS_CLOSEALERT1 28
#define IDS_CLOSEALERT2 29




/*
* Structure holding the "global" variables. Creating a structure with
* has several advantages over separately declaring each field as a
* global:
* 1. Keep source files clean.
* 2. Eliminates need for many "extern" declarations.
* 3. A single pointer to this structure can be passed throughout
* the application, hiding the fact that it's global.
* 4. Allows the variables to be allocated dynamically or from
* different memory than the application's DS.
* 5. Any reference to these variables will have a pointer or
* structure dereference, which points to where the variable
* actually is defined. Separate globals are not distinguishable
* from locals, making code harder to read.
*
* Note that fNoDirty is used from OLEOBJ.C in the ObjShow method
* to prevent setting fDirty when the window is sized from ObjShow.
*/

typedef struct
{
HWND hWnd; //Top-level application window.
HWND hWndPolyline; //Editor window.
HINSTANCE hInst; //Application instance handle.
LPSTR pszCmdLine; //Command line passed to WinMain.
UINT nCmdShow; //Initial ShowWindow command.
HLOCAL hStringMem; //Stringtable memory.
UINT cfCosmo; //Private clipboard format.
BOOL fDirty; //Is file dirty?
BOOL fNoDirty; //If TRUE, don't touch dirty flag.
BOOL fOpenFile; //FALSE if File/New used until saved.
char szFile[CCHPATHMAX]; //Filename for Save command.

BOOL fOLE; //Indicates if we are linked/embedded.
} GLOBALS;

typedef GLOBALS FAR * LPGLOBALS;

//External:
extern char NEAR *rgpsz[CSTRINGS];
extern LPGLOBALS pGlob;


//Versioning.
#define VERSIONMAJOR 1
#define VERSIONMINOR 0







/*
* Function prototypes, organized by source file. Any small definition
* required by only one source file is also included here under the
* same heading.
*/

//CLIP.C
BOOL WINAPI FEditCut(LPGLOBALS);
BOOL WINAPI FEditCopy(LPGLOBALS, BOOL);
BOOL WINAPI FEditPaste(LPGLOBALS);
HGLOBAL WINAPI HGetPolyline(HWND);
HGLOBAL WINAPI HGetMetafilePict(HWND);
HGLOBAL WINAPI HGetBitmap(HWND);


//COMMDLG.C
BOOL WINAPI FSaveOpenDialog(HWND, HINSTANCE, LPSTR, LPSTR, LPSTR, LPSTR, BOOL);

//EXIT.C
BOOL WINAPI FApplicationExit(LPGLOBALS);

//FILE.C
BOOL WINAPI FDirtySet(BOOL);
BOOL WINAPI FCleanVerify(LPGLOBALS);
BOOL WINAPI FFileNew(LPGLOBALS);
BOOL WINAPI FFileOpen(LPGLOBALS, BOOL);
BOOL WINAPI FFileSave(LPGLOBALS);
BOOL WINAPI FFileSaveAs(LPGLOBALS);
BOOL WINAPI FFileExit(LPGLOBALS);

//FILEIO.C
BOOL WINAPI FCosFileRead(LPGLOBALS, LPSTR, LPPOLYLINE);
BOOL WINAPI FCosFileWrite(LPGLOBALS, LPSTR, LPPOLYLINE);


//INIT.C
BOOL WINAPI FApplicationInit(LPGLOBALS, HINSTANCE);
BOOL WINAPI FClassRegister(LPGLOBALS, HINSTANCE);
BOOL WINAPI FFileInit(LPGLOBALS);
HLOCAL WINAPI HLoadAppStrings(LPGLOBALS);
HLOCAL WINAPI HListParse(LPSTR);
LPSTR PASCAL PszWhiteSpaceScan(LPSTR, BOOL);

//MISC.C
void WINAPI WindowTitleSet(HWND, LPSTR);
void WINAPI RectConvertToHiMetric(HWND, LPRECT);
void WINAPI RectConvertToDevice(HWND, LPRECT);

//COSMO.C
LRESULT WINAPI CosmoWndProc(HWND, UINT, WPARAM, LPARAM);
BOOL WINAPI AboutProc(HWND, UINT, WPARAM, LPARAM);