📄 labstr.h
字号:
/// RB 11/16/98 t4121 v6.0138 CURRENT_DATE_IN_CUSTOM_FORMAT_IN_DIALOG
#define GET_NUMBER_OF_FIRST_CUSTOM_FORMAT 0x00000100
/// end CURRENT_DATE_IN_CUSTOM_FORMAT_IN_DIALOG
WORD FAR PASCAL LABUTIL_custom_date_format(int nIndex, WORD wCntrl, LPTSTR lpszCustomDateFormat);
/// end DATE_TIME_CUSTOM_FORMAT
int FAR PASCAL LABUTIL_dateinc(LPDOUBLE,ULONG , USHORT);
#define LABDATE_DATEFORMAT_SEC (1.0/86400) /* 1/(24*3600) */
/// CPY v3.782 DATE_INC_BUG
/// these constants are kept the same but they all
/// act with lpOutPut == LPNULL
/// added new for 3.782
#define MASK_LABDATE_MANAGEMENT 0xF000
#define LABDATE_IS_SIMPLE_FORMAT 0x7000
/// return 1 if spcified index in style should
/// use simple format for data entry
#define LABDATE_INIT 0x8000 /// v3.782 kept the same
/// CPY v3.73
#define LABDATE_TEST_HEBR_LANGUAGE 0x6000 /// v3.782 changed from 8001
// 0x8001
///JLIU 4.998 7/14/97 READ_DATE_TIME_MODIFY
#define LABDATE_TEST_DATATIME 0x1000
///end READ_DATE_TIME_MODIFY
/// CPY v3.782
/// CPY v3.783 DATE_DIALOG_BUG 4/26/95
//#define LABDATE_SHORT_FORMAT 0x0000
#define LABDATE_SHORT_FORMAT 0x0004
#define LABDATE_LONG_FORMAT 0x0001
#define LABDATE_SHORT_CHAR 0x0002
/// CPY v3.783 DATE_DIALOG_BUG 4/26/95
//#define LABDATE_FORMAT 0x0003
#define LABDATE_FORMAT 0x0007
#define LABDATE_NUM_FORMAT 0x0003 /* 19920201 */
/// CPY v3.783 DATE_DIALOG_BUG 4/26/95
//#define LABDATE_ADD_TIME 0x0004
#define LABDATE_ADD_TIME 0x8000
/// move to the highest bit
#define LABDATE_ADD_SEC 0x0008
#define LABDATE_FOMRAT_READ 0x0010 /* for the FormatDateControl routine only */
/// CPY v3.783 DATE_DIALOG_BUG 4/26/95
#define MASK_LABDATA_OTHERFORMAT 0x00F0
///
#define LABDATE_ALPHA_MONTH 0x0010
#define LABDATE_NUMERIC_MONTH 0x0020
#define LABDATE_NUMERIC_DAY 0x0030
#define LABDATE_ALPHA_WDAY 0x0040
#define LABDATE_NUMERIC_WDAY 0x0050
#define LABDATE_ALPHA_QUATER 0x0060
#define LABDATE_NUMERIC_QUATER 0x0070
#define LABDATE_NUMERIC_YEAR 0x0080
/* 0x00F0 for basic formats */
/* 0 for full date */
// CPY v3.53, these flags must be in the high byte
#define LABDATE_MONTH_ONLY 0x0800
#define LABDATE_DAY_ONLY 0x0400
#define LABDATE_ADD_TIME_NUM 0x0200
#define LABDATE_NO_DAY 0x0100
#define LABDATE_GET_DATE 3
#define LABDATE_GET_CORRECT 4
/// CPY v3.53
#define LABDATE_SIMPLE_FORMAT 0x0080 // lowbyte but too big for index
#define LABDATE_INCREMENT 0x1000
#define LABDATE_GUESS_PARTIAL 0x2000
#define LABDATE_USE_FORMAT 0x4000 /* hibyte must be none zero to use format */
#define LABDATE_DATETIME 9
#define LABDATE_DATESEC 10
#define TIME_HHMM 8
#define TIME_HHMMSS 9
enum {
LABUTIL_DATE_INC = 0,
LABUTIL_DATE_INC_BY_UNIT,
LABUTIL_DATE_ROUND_INC,
LABUTIL_DATE_WAS_WEEK,
LABUTIL_DATE_ROUND_DAY,
LABUTIL_DATE_MATCH_DATE,
LABUTIL_DATE_MATCH_INC,
LABUTIL_DATE_ROUND_MONTH,/// CPY v3.85 11/7/95 DATE_INC_ERR
LABUTIL_DATE_ROUND_QUARTER,///CPY v3.98 11/14/95 ROUND_QUARTER, inc=year, minor=quarter still has problem
};
///CPY v3.85 11/7/95 DATE_INC_ERR
#define DATE_ROUND_DAY 0x10
#define DATE_ROUND_MONTH 0x20
#define DATE_ROUND_QUARTER 0x40 /// CPY v3.98 11/14/95 ROUND_QUARTER, inc=year, minor=quarter still has problem
///
void FAR PASCAL LABUTIL_sprintf(LPSTR,LPSTR,double);
LPSTR FAR PASCAL get_next_token_sep(LPSTR,LPSTR,LPSTR);
///CPY v4.11 6/26/96 ADD_FUNC_PROTOTYPE
int FAR PASCAL LABUTIL_MemCopy(register LPSTR,register LPSTR,register LONG);
//int FAR PASCAL LABUTIL_MemCopy(register HPSTR s,register HPSTR d,register LONG count);
/// can not make this change as there are many places that use this function with LPSTR
///CPY v4.11 6/26/96 ADD_FUNC_PROTOTYPE
//int FAR PASCAL LABUTIL_RowColChange(LPSTR,USHORT,USHORT,int);
int FAR PASCAL LABUTIL_RowColChange(HPSTR lpInp,USHORT nrows,USHORT ncols,int size);
/// EJP v3.8 GETFILESEC
HGLOBAL FAR PASCAL LABUTIL_GetFileSection(LPSTR lpStrFile, LPSTR lpStrSection);
/// end GETFILESEC
/// EJP v3.8 GETSET_CURR_FILE
// EJP v3.821 09-06-95 GET_PATH, Add message parameter.
//LPSTR FAR PASCAL LABUTIL_GetFileSection_Filename(LPSTR lpStrNewFilename);
LPSTR FAR PASCAL LABUTIL_GetFileSection_Filename(LPSTR lpStrNewFilename, WORD msg);
// end GET_PATH
/// end GETSET_CURR_FILE
/// EJP v3.8 GETMEMSEC
LPSTR FAR PASCAL LABUTIL_GetMemSectionPtr(LPSTR lpStrFile, LPSTR lpStrSection, WORD far*wSize);
WORD FAR PASCAL LABUTIL_GetMemSection(LPSTR lpStrMem, LPSTR lpStrSection, LPSTR lpStrDest);
int FAR PASCAL LABUTIL_GetMemSectionEntry(
LPSTR lpStrSection,
LPSTR lpStrEntry,
LPSTR lpStrDefValue,
LPSTR lpStrDestBuf,
WORD wDestBufSize,
LPSTR lpStrFile);
/// end GETMEMSEC
int FAR PASCAL LABUTIL_StructCompare(LPSTR,LPSTR,LONG);
USHORT FAR PASCAL LABUTIL_MemObject(LPHANDLE,USHORT,USHORT,LPSTR,ULONG);
#define LUMO_INIT 0
#define MASK_NEED_HANDLE 0x1000
enum {
LUMO_ADD = MASK_NEED_HANDLE,
LUMO_GET,
LUMO_FIND,
LUMO_DELETE,
LUMO_DESTROY,
//---------- CPY v4.9775 6/17/97 b2457 PLOT_ID_FOR_SCRIPT_ADDED_MENUS
LUMO_SET_INTERNAL,
//---------- PLOT_ID_FOR_SCRIPT_ADDED_MENUS
};
LPSTR FAR PASCAL LABUTIL_MultiLineControl(LPSTR lpstr,LPSTR lpstr2,USHORT cntrl);
#define LUMLC_COUNT 0
#define LUMLC_REVERT_ORDER 1
#define LUMLC_NEXT_LINE 2
///CPY v3.8 6/1/95 STRLIST
#ifndef LFS_NOT_IN_LIST ///CPY v3.8 6/1/95 STRLIST
typedef struct STRLIST {
//typedef struct LU_STRLIST {
USHORT id;
LPSTR str;
}STRLIST,FAR *LPSTRLIST;
/// CPY v3.74
typedef int STRID;
///
STRID FAR PASCAL LABUTIL_FindString(LPSTRLIST lpList,LPSTR lpstr);
#define LFS_NOT_IN_LIST 32764
#endif /// LFS_NOT_IN_LIST ///CPY v3.8 6/1/95 STRLIST
/// CPY v3.53, allow global falgs
#define MASK_LIST 0x0800
#define MASK_SUB 0x2000
#define MASK_STR 0x4000
#define MASK_CMD 0x8000
///
int FAR PASCAL LABUTIL_End_Number(LPSTR lpdes,LPSTR lpsrc);
/* copy src to des, return number if exist or zero */
/// CPY move these here from labutil.h
int FAR PASCAL Write64K(HFILE hFile,HPSTR lpData,LONG dwDataLen);
int FAR PASCAL Read64K(HFILE hFile,HPSTR lpData,LONG dwDataLen);
#ifdef ORG_JAPAN
typedef USHORT OMBCSCHAR;
///CPY b1666 v4.93 2/22/97 HALF_WIDTH_J_CHARACTERS
//CPY: after more examination, it turns out that it is due to the half width characters. So temp solution is to tell people to avoid using these.
//I looked at the character map and discover the double-byte is in the range
//of 0x80 to 0x9f, 0xe0 to 0xff, and 0xA0 to 0xDF is reserved for these
//halfwidth characters.
//#define NON_PRNT_ASCII(cc) ((BYTE)(cc) & 0x80)
#define BYTE_CHAR(cc) ((BYTE) (cc))
#define HALF_CHAR(cc) (BYTE_CHAR(cc) >= 0xA0 && BYTE_CHAR(cc) <= 0xDF)
#define LEAD_CHAR_FOR_2BYTE(cc) ( (BYTE_CHAR(cc) & 0x80) && !HALF_CHAR(cc))
LPSTR setc_two(LPSTR lp,OMBCSCHAR cc);
USHORT getc_two(LPSTR lp);
USHORT getc_two_adv(LPSTR lplp);
///CPY b1666 v4.93 2/22/97 HALF_WIDTH_J_CHARACTERS
//#define ADV_STR(lp) lp=NON_PRNT_ASCII(*lp)? (LPSTR)(lp)+2 : (LPSTR)(lp)+1
#define ADV_STR(lp) lp=LEAD_CHAR_FOR_2BYTE(*lp)? (LPSTR)(lp)+2 : (LPSTR)(lp)+1
///
#define SET_CHAR(lp,cc) lp = setc_two(lp,cc)
#define GET_CHAR(lp) getc_two(lp)
#define SET_ADV(lpd,lps) SET_CHAR(lpd,GET_CHAR(lps)),ADV_STR(lps)
#define GET_ADV(lps) getc_two_adv(&lps)
#else
/// ML 10/27/97 UNIFIED_STRING_MANIPULATION_MBCS
#ifdef UNIFIED_STRING_MANIPULATION_MBCS
#pragma message("UNIFIED UNIFIED UNIFIED UNIFIED UNIFIED String manipulation using MBCS UNIFIED UNIFIED UNIFIED UNIFIED UNIFIED")
typedef USHORT OMBCSCHAR;
LPSTR adv_str_MBCS(LPSTR *lplp);
OMBCSCHAR getc_MBCS(LPCSTR lp);
OMBCSCHAR setc_MBCS(LPSTR *lplp, OMBCSCHAR cc);
OMBCSCHAR setc_adv_MBCS(LPSTR *lplpd, LPSTR *lplps);
OMBCSCHAR getc_adv_MBCS(LPSTR *lplp);
#define ADV_STR(lp) adv_str_MBCS(&lp)
#define GET_CHAR(lp) getc_MBCS(lp)
#define SET_CHAR(lp,cc) setc_MBCS(&lp, cc)
#define SET_ADV(lpd,lps) setc_adv_MBCS(&lpd, &lps)
#define GET_ADV(lps) getc_adv_MBCS(&lps)
#else // !UNIFIED_STRING_MANIPULATION_MBCS
/// end UNIFIED_STRING_MANIPULATION_MBCS
typedef char OMBCSCHAR; //----------------------- CPY v6.0130 b4228 9/25/98 PLOT_A_SUPPORT_MORE_THAN_10_NUMBERS
#define ADV_STR(lp) lp++
#define GET_CHAR(lp) *lp
#define SET_CHAR(lp,cc) *lp++ = cc
#define SET_ADV(lpd,lps) *lpd++ = *lps++
#define GET_ADV(lps) *lps++
/// ML 10/27/97 UNIFIED_STRING_MANIPULATION_MBCS
#endif // !UNIFIED_STRING_MANIPULATION_MBCS
/// end UNIFIED_STRING_MANIPULATION_MBCS
#endif
#define ADV_ONE_BYTE(lp) lp++
#define SET_ONE_BYTE(lp,cc) *lp = cc
#define SET_ONE_ADV(lpd,lps) *lpd++ = *lps++
/// YN v4.94 2/28/97 MOVED_ERR_SIGN_TO_OUTIL.DLL
// For make it accessible from NLSF
#ifdef ORG_JAPAN
#define SIGN_CHAR "亇"
#else
#define SIGN_CHAR "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -