663 lines
22 KiB
C
663 lines
22 KiB
C
/*
|
|
* Windows Calendar
|
|
* Copyright (c) 1985 by Microsoft Corporation, all rights reserved.
|
|
* Written by Mark L. Chamberlin, consultant to Microsoft.
|
|
*
|
|
****** cal.h
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
/* Get rid of some stuff from windows.h. */
|
|
#define NOGDICAPMASKS
|
|
#define NOATOM
|
|
#define NOWH
|
|
#define NOSOUND
|
|
#define NOATOM
|
|
#define NOCOMM
|
|
#define NOMETAFILE
|
|
#define NOREGION
|
|
#define NOKANJI
|
|
|
|
#include <stdlib.h> /* Get declaration for errno. */
|
|
#include <windows.h>
|
|
#ifndef RC_INVOKED
|
|
#include <port1632.h>
|
|
#endif
|
|
#include <commdlg.h>
|
|
|
|
#define LSTRING
|
|
#include "..\\common\\date.h" /* Common date/time stuff */
|
|
#include <io.h> /* Get I/O function declarations. */
|
|
#include <errno.h> /* Get definitions of error codes. */
|
|
|
|
typedef short SINT;
|
|
|
|
/* Note - I have avoided using frequently occuring sequences of letters
|
|
for data types. While the loss of mnemonic value is regrettable,
|
|
it is less important than being able to easily search for occurences of
|
|
the data type. For example, an appointment record is QR instead of AR,
|
|
because searching for "ar" doesn't work well (char, far, and all sorts
|
|
of English words in comments).
|
|
*/
|
|
|
|
typedef WORD DT; /*** DT - date packed into 2 bytes - the number
|
|
of days since January 1, 1980. */
|
|
|
|
#define PT_LEN 50
|
|
|
|
|
|
#define DTNIL (DT)0xFFFF /* An impossible DT. Note that by making this
|
|
the largest possible value, it can safely
|
|
be used in vftAlarmFirst.dt and
|
|
vftAlarmNext.dt and have comparisons work
|
|
properly. For example, if vftAlarmNext.dt
|
|
== DTNIL, there is no next alarm, and
|
|
the current FT will never look greater or
|
|
equal, so the alarm can't go off.
|
|
*/
|
|
#define DTFIRST (DT)0 /* The DT for January 1, 1980. */
|
|
#define DTLAST (DT)0xAB35 /* The DT for December 31, 2099. */
|
|
|
|
typedef SINT OBK; /*** Offset in Blocks within a file -
|
|
From 0 through 32765, so it
|
|
uses only 15 bits and does not include
|
|
DLNIL or DLNOCHANGE.
|
|
*/
|
|
|
|
typedef WORD DL; /*** DL - Date Location. Bit 15 is 0
|
|
if the date is in the original file,
|
|
1 if it's in the change file. Bits
|
|
0 through 14 contain the OBK.
|
|
If the date is in neither file, the
|
|
DL is DLNIL.
|
|
*/
|
|
#define DLNIL (DL)0xFFFF /* An impossible DL - it means the date is
|
|
not in a file.
|
|
*/
|
|
#define DLNOCHANGE (DL)0xFFFE /* An impossible DL that means don't change
|
|
the old DL.
|
|
*/
|
|
#define DLSPECIALLOW (DL)0xFFFE /* The lowest special DL. */
|
|
|
|
#define DLFCHANGEFILEMASK (DL)0x8000 /* Mask for getting at the change file
|
|
flag in a DL.
|
|
*/
|
|
#define DLOBKMASK (DL)0x7FFF /* Mask for getting at the OBK in a DL. */
|
|
#define BLOCKWRITE 0x0010 /* mask for disallowing other copies of
|
|
calendar from writing the same file */
|
|
typedef struct
|
|
{
|
|
DT dt; /* Date */
|
|
SINT fMarked; /* appropriate bit is set if
|
|
date is marked. */
|
|
SINT cAlarms; /* Count of alarms set. */
|
|
DL dl; /* Where the date is stored. */
|
|
WORD idr; /* The index into vrghlmDr if
|
|
the date is in memory. If not
|
|
in memory, this is IDRNIL.
|
|
*/
|
|
DL dlSave; /* Used to hold the previous DL
|
|
during a Save operation. This
|
|
is used for error recovery.
|
|
*/
|
|
} DD; /*** DD - Date Descriptor */
|
|
|
|
|
|
typedef struct /*** D3 - date in three parts */
|
|
{
|
|
WORD wMonth; /* 0 through 11 */
|
|
WORD wDay; /* 0 through 30 */
|
|
WORD wYear; /* 0 (1980) through 119 (2099) */
|
|
} D3;
|
|
|
|
#define MONTHJAN 0 /* Representation of January in a D3.wMonth */
|
|
#define MONTHFEB 1 /* Representation of February in a D3.wMonth */
|
|
#define MONTHDEC 11 /* Representation of December in a D3.wMonth */
|
|
#define YEAR1980 0 /* Representation of 1980 in a D3.wYear */
|
|
#define YEAR2099 119 /* Representation of 2099 in a D3.wYear */
|
|
|
|
typedef SINT TM; /*** - Time packed into an int - the number of
|
|
minutes since midnight.
|
|
*/
|
|
#define TMLAST (TM)(24 * 60 - 1)
|
|
#define TMNILHIGH (TM)(TMLAST + 1)
|
|
#define TMNILLOW (TM)-1
|
|
#define TMNOON (TM)(12 * 60)
|
|
|
|
typedef struct
|
|
{
|
|
DT dt; /* Date */
|
|
TM tm; /* Time */
|
|
} FT; /*** FT - Full Time (date and time) */
|
|
|
|
#define OTQRNIL 0xFFFF
|
|
|
|
#ifndef RC_INVOKED
|
|
#pragma pack(1)
|
|
typedef struct
|
|
{
|
|
SINT cb : 8; /* Count of bytes in this QR. */
|
|
SINT fAlarm : 1; /* TRUE if alarm set. */
|
|
SINT fSpecial : 1; /* TRUE if special time. */
|
|
SINT reserved : 6; /* Reserved for future use - 0 filled. */
|
|
TM tm; /* Appointment Time. */
|
|
CHAR qd [1]; /*** - QD - Appointment Description. Up to
|
|
CCHQDMAX + 1 chars but declared as a
|
|
single char here since storage is
|
|
dynamically allocated. Not AD since
|
|
we want to be able to search for this
|
|
data type.
|
|
*/
|
|
} QR;
|
|
typedef QR UNALIGNED *PQR; /*** QR - Appointment Record - not AR since
|
|
we want to be able to search for this data type.
|
|
*/
|
|
#pragma pack()
|
|
#endif /* RC_INVOKED */
|
|
|
|
/* Count of bytes in a QR header (everything except the QD). */
|
|
#define CBQRHEAD (sizeof (QR) - sizeof (char))
|
|
|
|
|
|
|
|
|
|
/* !!! WARNING - If CCHQDMAX is changed, be sure to adjust the ACKALARM
|
|
dialog in CALENDAR.RC (since the resource compiler can't multiply or
|
|
divide, and it also seems that it doesn't support the use of symbolic
|
|
constants for specifying the positions or sizes of controls. Note
|
|
that this value also affects the forced word-wrap in calprint.c!
|
|
*/
|
|
|
|
#define CCHQDMAX 80 /* Maximum number of text characters in
|
|
an appointment description (does not
|
|
include the zero byte terminator).
|
|
*/
|
|
|
|
#define PAGENUMMAX 4 /* max num. digits of page number displayable
|
|
in header or footer */
|
|
|
|
#define CCHJUST 3 /* size of array containing justified
|
|
header/footer info */
|
|
|
|
#define CCHNONJUST 10 /* size of array containing non-justified
|
|
header/footer info */
|
|
|
|
/* !!! WARNING END */
|
|
|
|
|
|
|
|
#define CBNOTESMAX 400 /* Maximum length of notes including unformatted
|
|
text, soft line breaks, and 0 terminator.
|
|
*/
|
|
|
|
#define CLNNOTES 3 /* The number of lines of notes. */
|
|
|
|
/* A soft line break takes 3 characters <CR,CR,LF>. All but the last line
|
|
of the notes area can end with a soft line break. This is the count
|
|
of bytes needed to accomodate that case.
|
|
*/
|
|
#define CBSOFTBREAKSMAX (3 * (CLNNOTES - 1))
|
|
|
|
|
|
/* The maximum length of the unformatted text of the notes (reserve
|
|
space for 0 terminator and soft line breaks).
|
|
*/
|
|
#define CBNOTESTEXTMAX (CBNOTESMAX - 1 - CBSOFTBREAKSMAX)
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
TM tm; /* Appointment time. */
|
|
WORD otqr; /* Offset into tqr. */
|
|
} LD; /*** - Line Descriptor. */
|
|
|
|
|
|
#define CBBK 64 /*** BK - disk block. The size of a disk block
|
|
(Calendar's fundamental unit of allocation).
|
|
*/
|
|
|
|
|
|
/* !!! WARNING - Be sure to adjust CDRHEAD when when modifying the
|
|
definition of a DR. Also note that except for the dt member,
|
|
all members can be initialized to 0 (dt must be set to DTNIL).
|
|
*/
|
|
|
|
/* The maximum size of a DR. Must be a multiple of CBBK. */
|
|
#define CBKDRMAX 32
|
|
#define CBDRMAX (CBKDRMAX * CBBK)
|
|
|
|
/* The size of the header. */
|
|
#define CBDRHEAD (sizeof (SINT) + sizeof (DT) + sizeof (SINT) + sizeof (SINT) + sizeof (SINT))
|
|
|
|
/* The count of bytes allocatable for the notes and the tqr. */
|
|
#define CBDRDATAMAX (CBDRMAX - CBDRHEAD)
|
|
|
|
/* The count of bytes available for the tqr. */
|
|
#define CBTQRMAX (CBDRDATAMAX - CBNOTESMAX)
|
|
|
|
typedef struct
|
|
{
|
|
SINT wReserved; /* Reserved for future use - written out
|
|
as 0.
|
|
*/
|
|
DT dt; /* The associated dt. DTNIL means this
|
|
DR is not in use.
|
|
*/
|
|
SINT fDirty; /* TRUE if modifications have been made. */
|
|
WORD cbNotes; /* Length of notes. */
|
|
WORD cbTqr; /* Length of tqr. */
|
|
BYTE rgbData [CBDRDATAMAX]; /* Room for the notes and the tqr. */
|
|
} DR; /*** DR - Date Record */
|
|
|
|
/* !!! WARNING END */
|
|
|
|
#define CDR 3 /* The number of DRs in memory. */
|
|
#define IDRNIL (WORD)0xFFFF /* An inpossible idr. */
|
|
|
|
/* The maximum length of a file specification in DOS 3.0, including
|
|
the device, directories, filename, and extension.
|
|
*/
|
|
#define CCHFILESPECMAX 128
|
|
#define CCHFILTERMAX 64 /* max. length of filter string for Fileopen */
|
|
|
|
|
|
/* Filename (8) plus period (1) plus extension (3). */
|
|
#define CCHFILENAMEANDEXTMAX 12
|
|
|
|
/* Enough room for "Calendar - filename.cal" plus the terminator (which
|
|
is included in CCHSZCALENDARDASH).
|
|
*/
|
|
#define CCHSZWINDOWTEXTMAX (CCHSZCALENDARDASH + CCHFILENAMEANDEXTMAX)
|
|
|
|
/* The sizes of the items in the header BK. */
|
|
#define CBMAGIC 8
|
|
#define CBCDD sizeof (SINT)
|
|
#define CBMINEARLYRING sizeof (SINT)
|
|
#define CBFSOUND sizeof (SINT)
|
|
#define CBMDINTERVAL sizeof (SINT)
|
|
#define CBMININTERVAL sizeof (SINT)
|
|
#define CBFHOUR24 sizeof (SINT)
|
|
#define CBTMSTART sizeof (TM)
|
|
|
|
/* Offsets into the file header BK. */
|
|
#define OBMAGIC 0
|
|
#define OBCDD (OBMAGIC + CBMAGIC)
|
|
#define OBMINEARLYRING (OBCDD + CBCDD)
|
|
#define OBFSOUND (OBMINEARLYRING + CBMINEARLYRING)
|
|
#define OBMDINTERVAL (OBFSOUND + CBFSOUND)
|
|
#define OBMININTERVAL (OBMDINTERVAL + CBMDINTERVAL)
|
|
#define OBFHOUR24 (OBMININTERVAL + CBMININTERVAL)
|
|
#define OBTMSTART (OBFHOUR24 + CBFHOUR24)
|
|
|
|
|
|
#define CBMONTHARRAY 56 /* Number of bytes in the month array. was 49 */
|
|
|
|
#define GRAYOUT (DWORD)0x00FA0089 /* dest = dest OR pattern */
|
|
|
|
#define CCHMONTH 20 /* The longest month name. */
|
|
#define CCHYEAR 4 /* Chars in a year (e.g., 1985). */
|
|
#define CCHTIMESZ 12 /* Absolute maximum number of chars in a zero
|
|
terminated time string, taking into account
|
|
international formats. 4 plus space plus
|
|
6 CHAR AM/PM string plus 0 at end.
|
|
*/
|
|
#define SAMPLETIME 600 /* arbitrary time used for calculating
|
|
length of a time string in daymode */
|
|
|
|
#define CCHDATEDISP 64 /* The number of characters in a zero
|
|
terminated ASCII date string.
|
|
30 is large enough for US style
|
|
strings, so 64 ought to do it for all
|
|
else.
|
|
*/
|
|
#define CCHBUFMAX 256
|
|
#define LRMARGINMAX 30 /* max. allowable left+right margin */
|
|
#define TBMARGINMAX 15 /* max. allowabe top+bottom margin */
|
|
#define CCHDASHDATE 11 /* Maximum length of zero terminated
|
|
dashed date string. For example,
|
|
"10-28-1985" (10 + zero byte).
|
|
*/
|
|
#define MAXHDRFTRLENGTH 80 /* maximum length of header/footer */
|
|
|
|
#define MARK_BOX 128 /* Bit indicating the date is marked. */
|
|
#define MARK_PARENTHESES 256 /* Bit indicating the date is marked. */
|
|
#define MARK_CIRCLE 512 /* Bit indicating the date is marked. */
|
|
#define MARK_CROSS 1024 /* Bit indicating the date is marked. */
|
|
#define MARK_UNDERSCORE 2048 /* Bit indicating the date is marked. */
|
|
|
|
|
|
#define TODAY 64 /* Bit indicating the date is today. */
|
|
|
|
#define CLEARMARKEDBITS 127 /* bit mask for clearing marked bits */
|
|
|
|
#define SCROLLMONTHLAST 1439 /* Can scroll from 0 to SCROLLMONTHLAST while
|
|
in month mode. (2099 - 1980 + 1) * 12 - 1.
|
|
*/
|
|
#define TWELVEHOURS 720 /* number of minutes in half a day */
|
|
#define MDINTERVAL15 0 /* Interval is 15 minutes. */
|
|
#define MDINTERVAL30 1 /* Interval is 30 minutes. */
|
|
#define MDINTERVAL60 2 /* Interval is 60 minutes. */
|
|
|
|
#define LNNIL (LN)-1 /* An invalid ln. */
|
|
|
|
#define ALARMBEEP 0 /* Value sent to MessageBeep. */
|
|
#define CALARMBEEPS 4 /* The total number of beeps in an alarm. */
|
|
|
|
|
|
/* Menu command ids. */
|
|
|
|
#define IDCM_NEW 0
|
|
#define IDCM_OPEN 1
|
|
#define IDCM_SAVE 2
|
|
#define IDCM_SAVEAS 3
|
|
#define IDCM_PRINT 4
|
|
#define IDCM_REMOVE 5
|
|
|
|
#define IDCM_CUT 6
|
|
#define IDCM_COPY 7
|
|
#define IDCM_PASTE 8
|
|
|
|
#define IDCM_DAY 9
|
|
#define IDCM_MONTH 10
|
|
|
|
#define IDCM_TODAY 11
|
|
#define IDCM_PREVIOUS 12
|
|
#define IDCM_NEXT 13
|
|
#define IDCM_DATE 14
|
|
|
|
#define IDCM_SET 15
|
|
#define IDCM_CONTROLS 16
|
|
|
|
#define IDCM_MARK 17
|
|
#define IDCM_SPECIALTIME 18
|
|
#define IDCM_DAYSETTINGS 19
|
|
|
|
#define IDCM_ABOUT 20
|
|
#define IDCM_DEL 21
|
|
#define IDCM_EXIT 22
|
|
|
|
/* 26-Mar-1987 */
|
|
#define IDCM_START 23
|
|
#define IDCM_START12 24
|
|
|
|
/* 18-Nov-88 page setup and help menu ids */
|
|
|
|
#define IDCM_PAGESETUP 132
|
|
#define IDCM_PRINTERSETUP 100
|
|
#define IDCM_ACTIVEWINDOW 134
|
|
|
|
/* Standard IDS */
|
|
|
|
#define IDCM_SEARCH 33
|
|
|
|
#define IDCM_USINGHELP 40
|
|
#define IDCM_HELP 41
|
|
|
|
/* Dialog ids.
|
|
!!! WARNING - The dialog ids are also used to index vrglpfnDialog
|
|
so they must be consecutive integers starting at 1, and must match
|
|
the entries in vrglpfnDialog. Apparently a dialog id of 0 is unacceptable,
|
|
so they begin with 1, and we subtract 1 to get the index into
|
|
vrglpfnDialog.
|
|
*/
|
|
#define CIDD 10 /* The number of dialog ids in
|
|
vrglpfnDialog. Changed from 9 to
|
|
10 on 11/8/88 on adding new dialog
|
|
box for multiple symbol day marking.
|
|
*/
|
|
#define IDD_SAVEAS 1
|
|
#define IDD_PRINT 2
|
|
#define IDD_REMOVE 3
|
|
#define IDD_DATE 4
|
|
#define IDD_CONTROLS 5
|
|
#define IDD_SPECIALTIME 6
|
|
#define IDD_DAYSETTINGS 7
|
|
#define IDD_ABOUT 8
|
|
#define IDD_ACKALARMS 9
|
|
#define IDD_PAGESETUP 10 /* for the new Page Setup Dialog */
|
|
|
|
#define IDD_OPEN 11 /* The open dialog is not included in
|
|
* vrglpfnDialog since it is taken
|
|
* care of by dlgopen.c.
|
|
*/
|
|
|
|
#define IDD_MARK 12 /* putting this in vrglpfnDialog and
|
|
increasing CIDD did not work */
|
|
|
|
#define IDD_ABORTPRINT 14 /* The abort print dialog is not included
|
|
in vrglpfnDialog.
|
|
*/
|
|
|
|
|
|
|
|
/* !!! WARNING END */
|
|
|
|
/* Control ids */
|
|
|
|
#define IDCN_IGNORE -1
|
|
|
|
/* IDOK is 1, and IDCANCEL is 2 from windows.h */
|
|
|
|
#define IDCN_EDIT 3
|
|
#define IDCN_LISTBOX 4
|
|
#define IDCN_PATH 5
|
|
#define IDCN_FROMDATE 6
|
|
#define IDCN_TODATE 7
|
|
#define IDCN_EARLYRING 8
|
|
#define IDCN_SOUND 9
|
|
#define IDCN_INSERT 10
|
|
#define IDCN_DELETE 11
|
|
#define IDCN_MIN15 12
|
|
#define IDCN_MIN30 13
|
|
#define IDCN_MIN60 14
|
|
#define IDCN_HOUR12 15
|
|
#define IDCN_HOUR24 16
|
|
#define IDCN_STARTINGTIME 17
|
|
|
|
/* foll ids added 11/8/88 for multiple-symbol marking */
|
|
|
|
#define IDCN_MARKBOX 18
|
|
#define IDCN_MARKPARENTHESES 19
|
|
#define IDCN_MARKCIRCLE 20
|
|
#define IDCN_MARKCROSS 21
|
|
#define IDCN_MARKUNDERSCORE 22
|
|
|
|
#define IDCN_AM 23
|
|
#define IDCN_PM 24
|
|
#define IDCN_LISTBOXDIR 25 /* for the new Open File Dialog */
|
|
#define IDCN_TEXT 26 /* for new Open File Dialog */
|
|
#define IDCN_READONLY 27 /* for new Open File Dialog */
|
|
|
|
/* Keep these in sequence. */
|
|
/* for Page Setup Dialog */
|
|
#define IDCN_EDITHEADER 28
|
|
#define IDCN_EDITFOOTER 29
|
|
#define IDCN_EDITMARGINLEFT 30
|
|
#define IDCN_EDITMARGINRIGHT 31
|
|
#define IDCN_EDITMARGINTOP 32
|
|
#define IDCN_EDITMARGINBOT 33
|
|
|
|
|
|
#define IDECQD 100 /* ID of appointment description
|
|
edit control.
|
|
*/
|
|
#define IDECNOTES 101 /* ID of notes area edit control. */
|
|
|
|
#ifndef BUG_8560
|
|
/* The Child window Id for the scrollbar control */
|
|
#define IDHORZSCROLL 201
|
|
#endif
|
|
|
|
|
|
/* File ids.
|
|
!!! WARNING - if the order of these is changed, the GIVEME string IDS must
|
|
also be changed.
|
|
*/
|
|
#define IDFILEORIGINAL 0
|
|
#define IDFILECHANGE 1
|
|
#define IDFILENEW 2
|
|
#define CFILE 3 /* Number of files. */
|
|
/* !!! WARNING END */
|
|
|
|
#define CCHSZCALENDARDASH 50 /* Length of string "Calendar - ",
|
|
including the termintor. If the
|
|
string is changed in the .RC file,
|
|
this must be changed accordingly.
|
|
*/
|
|
|
|
/* String ids. */
|
|
|
|
#define IDS_UNTITLED 0
|
|
#define IDS_CALENDAR 1
|
|
#define IDS_BADDATE 2
|
|
#define IDS_BADDATERANGE 3
|
|
#define IDS_BADTIME 4
|
|
#define IDS_NOCREATECHANGEFILE 5
|
|
#define IDS_NOCHANGEFILE 6
|
|
#define IDS_ERRORWRITINGCHANGES 7
|
|
#define IDS_ERRORREADINGDATE 8
|
|
#define IDS_TIMETOSAVE 9
|
|
#define IDS_OUTOFMEMORY 10
|
|
#define IDS_RENAMEFAILED 11
|
|
#define IDS_SAVEFAILED 12
|
|
#define IDS_DISKFULL 13
|
|
#define IDS_FILEEXISTS 14
|
|
#define IDS_SAVECHANGES 15
|
|
#define IDS_FILENOTFOUND 16
|
|
#define IDS_NOTCALFILE 17
|
|
#define IDS_CANNOTREADFILE 18
|
|
#define IDS_BADEARLYRING 19
|
|
#define IDS_NOTSPECIALTIME 20
|
|
#define IDS_NOSUCHTIME 21
|
|
#define IDS_TIMEALREADYINUSE 22
|
|
#define IDS_CANNOTPRINT 23
|
|
#define IDS_CALENDARDASH 24
|
|
#define IDS_TOOMANYDATES 25
|
|
#define IDS_DATEISFULL 26
|
|
#define IDS_TEXTTRUNCATED 27
|
|
|
|
|
|
/* The GIVEME strings must be ordered according to the order of the
|
|
IDFILEs (which are defined earlier in this file).
|
|
*/
|
|
#define IDS_GIVEMEFIRST 28
|
|
#define IDS_GIVEMEORIGINAL 28
|
|
#define IDS_GIVEMECHANGEFILE 29
|
|
#define IDS_GIVEMENEW 30
|
|
|
|
#define IDS_BADFILENAME 31
|
|
|
|
#define IDS_NEDSTP 32
|
|
#define IDS_NEMTP 33
|
|
#define IDS_ALARMSYNC 34
|
|
#define IDS_NOTIMER 35
|
|
#define IDS_DATERANGE 36
|
|
#define IDS_DATESUBRANGE 37
|
|
#define IDS_TIMESUBRANGE 38
|
|
#define IDS_NOCREATE 39
|
|
#define IDS_MERGE1 40
|
|
#define IDS_FILEEXTENSION 41
|
|
|
|
#define IDS_FILEREADONLY 42 /* string id for Read Only error msg */
|
|
#define IDS_BLANK 43 /* " " " a blank character */
|
|
#define IDS_MARKCIRCLE 44 /* " " " a "o" mark symbol */
|
|
#define IDS_MARKLEFTPAREN 45 /* " " " a "(" mark symbol */
|
|
#define IDS_MARKRIGHTPAREN 46 /* " " " a ")" mark symbol */
|
|
#define IDS_MARKCROSS 47 /* " " " a "*" mark symbol */
|
|
#define IDS_PNAMEPREFIX 48 /* " " " "\\*" string */
|
|
#define IDS_BLANKSTRING 49 /* string composed of blank characters */
|
|
#define IDS_HELPFILE 50 /* Help filename */
|
|
#define IDS_INCORRECTSYNTAX 51
|
|
#define IDS_LETTERS 52 /* letters used in Page Setup */
|
|
#define IDS_FILTERTEXT 53 /* Filter text for File/Open dialog */
|
|
#define IDS_ALLFILES 54 /* more Filter text */
|
|
#define IDS_OPENCAPTION 55 /* caption text for fileopen dlg */
|
|
#define IDS_SAVEASCAPTION 56 /* caption text for saveas dlg */
|
|
|
|
#define IDS_HEADER 100 /* Page Setup stuff. */
|
|
#define IDS_FOOTER 101
|
|
#define IDS_LEFT 102
|
|
#define IDS_RIGHT 103
|
|
#define IDS_TOP 104
|
|
#define IDS_BOTTOM 105
|
|
|
|
|
|
#define CSTRINGS 56 /* The number of strings loaded from the
|
|
resource file.
|
|
*/
|
|
|
|
#define CCHSTRINGSMAX 3500 /* The total length of all loaded strings
|
|
must be less than or equal to this.
|
|
If this is exceeded, CalInit will fail,
|
|
preventing Calendar from running. If
|
|
this should occur, CCHSTRINGSMAX should
|
|
be increased as necessary and the initial
|
|
heap size in CALENDAR.DEF should also
|
|
be increased accordingly. was 2048
|
|
*/
|
|
|
|
/* Message posted to self upon receiving activate message */
|
|
#define CM_PROCALARMS WM_USER+100
|
|
|
|
|
|
#ifndef RESOURCE
|
|
/* Abbreviations for referencing the loaded strings. */
|
|
#define vszUntitled vrgsz [IDS_UNTITLED]
|
|
#define vszCalendar vrgsz [IDS_CALENDAR]
|
|
#define vszBadDate vrgsz [IDS_BADDATE]
|
|
#define vszBadDateRange vrgsz [IDS_BADDATERANGE]
|
|
#define vszBadTime vrgsz [IDS_BADTIME]
|
|
#define vszNoCreateChangeFile vrgsz [IDS_NOCREATECHANGEFILE]
|
|
#define vszNoChangeFile vrgsz [IDS_NOCHANGEFILE]
|
|
#define vszErrorWritingChanges vrgsz [IDS_ERRORWRITINGCHANGES]
|
|
#define vszErrorReadingDate vrgsz [IDS_ERRORREADINGDATE]
|
|
#define vszTimeToSave vrgsz [IDS_TIMETOSAVE]
|
|
#define vszOutOfMemory vrgsz [IDS_OUTOFMEMORY]
|
|
#define vszRenameFailed vrgsz [IDS_RENAMEFAILED]
|
|
#define vszFileExtension vrgsz [IDS_FILEEXTENSION]
|
|
#define vszSaveFailed vrgsz [IDS_SAVEFAILED]
|
|
#define vszDiskFull vrgsz [IDS_DISKFULL]
|
|
#define vszFileExists vrgsz [IDS_FILEEXISTS]
|
|
#define vszSaveChanges vrgsz [IDS_SAVECHANGES]
|
|
#define vszFileNotFound vrgsz [IDS_FILENOTFOUND]
|
|
#define vszNotCalFile vrgsz [IDS_NOTCALFILE]
|
|
#define vszCannotReadFile vrgsz [IDS_CANNOTREADFILE]
|
|
#define vszBadEarlyRing vrgsz [IDS_BADEARLYRING]
|
|
#define vszNotSpecialTime vrgsz [IDS_NOTSPECIALTIME]
|
|
#define vszNoSuchTime vrgsz [IDS_NOSUCHTIME]
|
|
#define vszTimeAlreadyInUse vrgsz [IDS_TIMEALREADYINUSE]
|
|
#define vszCannotPrint vrgsz [IDS_CANNOTPRINT]
|
|
#define vszCalendarDash vrgsz [IDS_CALENDARDASH]
|
|
#define vszTooManyDates vrgsz [IDS_TOOMANYDATES]
|
|
#define vszDateIsFull vrgsz [IDS_DATEISFULL]
|
|
#define vszTextTruncated vrgsz [IDS_TEXTTRUNCATED]
|
|
#define vszBadFileName vrgsz [IDS_BADFILENAME]
|
|
#define vszAlarmSync vrgsz [IDS_ALARMSYNC]
|
|
#define vszFileReadOnly vrgsz [IDS_FILEREADONLY]
|
|
#define vszBlank vrgsz [IDS_BLANK]
|
|
#define vszPathnamePrefix vrgsz [IDS_PNAMEPREFIX]
|
|
#define vszMarkLeftParen vrgsz [IDS_MARKLEFTPAREN]
|
|
#define vszMarkRightParen vrgsz [IDS_MARKRIGHTPAREN]
|
|
#define vszMarkCircle vrgsz [IDS_MARKCIRCLE]
|
|
#define vszMarkCross vrgsz [IDS_MARKCROSS]
|
|
#define vszBlankString vrgsz [IDS_BLANKSTRING]
|
|
#define vszHelpFile vrgsz [IDS_HELPFILE]
|
|
#define vszIncorrectSyntax vrgsz [IDS_INCORRECTSYNTAX]
|
|
#define vszTooManyDates vrgsz [IDS_TOOMANYDATES]
|
|
#define vszDateIsFull vrgsz [IDS_DATEISFULL]
|
|
#define vszTextTruncated vrgsz [IDS_TEXTTRUNCATED]
|
|
#define vszFilterText vrgsz [IDS_FILTERTEXT]
|
|
#define vszAllFiles vrgsz [IDS_ALLFILES]
|
|
#define vszOpenCaption vrgsz [IDS_OPENCAPTION]
|
|
#define vszSaveasCaption vrgsz [IDS_SAVEASCAPTION]
|
|
|
|
/* This must go at the end since it may use typedefs from cal.h */
|
|
#include "declare.h"
|
|
#include "..\\common\\common.h"
|
|
|
|
|
|
#endif
|