diff --git a/vbx/mscomm.bmp b/vbx/kpcomctl.bmp similarity index 100% rename from vbx/mscomm.bmp rename to vbx/kpcomctl.bmp diff --git a/vbx/mscomm.c b/vbx/kpcomctl.c similarity index 90% rename from vbx/mscomm.c rename to vbx/kpcomctl.c index b709189..b57fca5 100644 --- a/vbx/mscomm.c +++ b/vbx/kpcomctl.c @@ -1,4 +1,4 @@ -// mscomm.c - MSComm VBX control implementation +// kpcomctl.c - KPComCtl VBX control implementation // // Provides high-speed serial communications for 16-bit Visual Basic 4. // Implements MODEL, control procedure, property/event handling, and @@ -13,7 +13,7 @@ #include #include "vbapi.h" #include "serial.h" -#include "mscomm.h" +#include "kpcomctl.h" // ----------------------------------------------------------------------- // Global data @@ -23,23 +23,23 @@ HANDLE ghInstance = NULL; // ----------------------------------------------------------------------- // Convenience macro for re-dereferencing control data after VB API calls // ----------------------------------------------------------------------- -#define DEREF(hctl) ((MsCommDataT FAR *)VBDerefControl(hctl)) +#define DEREF(hctl) ((KpComCtlDataT FAR *)VBDerefControl(hctl)) // ----------------------------------------------------------------------- // Forward declarations - Control procedure // ----------------------------------------------------------------------- -LONG FAR PASCAL _export MsCommCtlProc(HCTL hctl, HWND hwnd, USHORT msg, USHORT wp, LONG lp); +LONG FAR PASCAL _export KpComCtlProc(HCTL hctl, HWND hwnd, USHORT msg, USHORT wp, LONG lp); LRESULT FAR PASCAL _export NotifyWndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp); // ----------------------------------------------------------------------- // Forward declarations - Internal functions (alphabetical) // ----------------------------------------------------------------------- -static void closePort(HCTL hctl, MsCommDataT FAR *pData); -static void fireOnComm(HCTL hctl, MsCommDataT FAR *pData, int16_t eventCode); -static LONG handleGetProperty(HCTL hctl, MsCommDataT FAR *pData, USHORT iProp); -static LONG handleSetProperty(HCTL hctl, MsCommDataT FAR *pData, USHORT iProp, LONG lp); +static void closePort(HCTL hctl, KpComCtlDataT FAR *pData); +static void fireOnComm(HCTL hctl, KpComCtlDataT FAR *pData, int16_t eventCode); +static LONG handleGetProperty(HCTL hctl, KpComCtlDataT FAR *pData, USHORT iProp); +static LONG handleSetProperty(HCTL hctl, KpComCtlDataT FAR *pData, USHORT iProp, LONG lp); static void initControlData(HCTL hctl); -static int16_t openPort(HCTL hctl, MsCommDataT FAR *pData); +static int16_t openPort(HCTL hctl, KpComCtlDataT FAR *pData); static void processEventNotify(HCTL hctl, int16_t commId); static void processReceiveNotify(HCTL hctl, int16_t commId); static void processTransmitNotify(HCTL hctl, int16_t commId); @@ -63,29 +63,29 @@ static char szInputMode[] = "Text\0Binary"; // Property descriptors // ----------------------------------------------------------------------- // offset default enum list enumMax -static PROPINFO propCommPort = { "CommPort", PF_fSetMsg | PF_fGetData | DT_SHORT, OFFSETIN(MsCommDataT, commPort), 0, 1L, NULL, 0 }; +static PROPINFO propCommPort = { "CommPort", PF_fSetMsg | PF_fGetData | DT_SHORT, OFFSETIN(KpComCtlDataT, commPort), 0, 1L, NULL, 0 }; static PROPINFO propSettings = { "Settings", PF_fSetMsg | PF_fGetMsg | DT_HSZ, 0, 0, 0L, NULL, 0 }; -static PROPINFO propPortOpen = { "PortOpen", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(MsCommDataT, portOpen), 0, 0L, NULL, 0 }; +static PROPINFO propPortOpen = { "PortOpen", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(KpComCtlDataT, portOpen), 0, 0L, NULL, 0 }; static PROPINFO propInput = { "Input", PF_fGetMsg | PF_fNoShow | DT_HSZ, 0, 0, 0L, NULL, 0 }; static PROPINFO propOutput = { "Output", PF_fSetMsg | PF_fNoShow | DT_HSZ, 0, 0, 0L, NULL, 0 }; -static PROPINFO propInBufferSize = { "InBufferSize", PF_fSetMsg | PF_fGetData | DT_SHORT, OFFSETIN(MsCommDataT, inBufferSize), 0, 4096L, NULL, 0 }; -static PROPINFO propOutBufferSize = { "OutBufferSize", PF_fSetMsg | PF_fGetData | DT_SHORT, OFFSETIN(MsCommDataT, outBufferSize), 0, 4096L, NULL, 0 }; +static PROPINFO propInBufferSize = { "InBufferSize", PF_fSetMsg | PF_fGetData | DT_SHORT, OFFSETIN(KpComCtlDataT, inBufferSize), 0, 4096L, NULL, 0 }; +static PROPINFO propOutBufferSize = { "OutBufferSize", PF_fSetMsg | PF_fGetData | DT_SHORT, OFFSETIN(KpComCtlDataT, outBufferSize), 0, 4096L, NULL, 0 }; static PROPINFO propInBufferCount = { "InBufferCount", PF_fGetMsg | PF_fNoShow | DT_SHORT, 0, 0, 0L, NULL, 0 }; static PROPINFO propOutBufferCount= { "OutBufferCount",PF_fGetMsg | PF_fNoShow | DT_SHORT, 0, 0, 0L, NULL, 0 }; -static PROPINFO propRThreshold = { "RThreshold", PF_fSetData| PF_fGetData | DT_SHORT, OFFSETIN(MsCommDataT, rThreshold), 0, 0L, NULL, 0 }; -static PROPINFO propSThreshold = { "SThreshold", PF_fSetData| PF_fGetData | DT_SHORT, OFFSETIN(MsCommDataT, sThreshold), 0, 0L, NULL, 0 }; -static PROPINFO propHandshaking = { "Handshaking", PF_fSetMsg | PF_fGetData | DT_ENUM, OFFSETIN(MsCommDataT, handshaking), 0, 0L, szHandshaking, 3 }; -static PROPINFO propInputLen = { "InputLen", PF_fSetData| PF_fGetData | DT_SHORT, OFFSETIN(MsCommDataT, inputLen), 0, 0L, NULL, 0 }; -static PROPINFO propInputMode = { "InputMode", PF_fSetData| PF_fGetData | DT_ENUM, OFFSETIN(MsCommDataT, inputMode), 0, 0L, szInputMode, 1 }; -static PROPINFO propDTREnable = { "DTREnable", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(MsCommDataT, dtrEnable), 0, 1L, NULL, 0 }; -static PROPINFO propRTSEnable = { "RTSEnable", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(MsCommDataT, rtsEnable), 0, 1L, NULL, 0 }; +static PROPINFO propRThreshold = { "RThreshold", PF_fSetData| PF_fGetData | DT_SHORT, OFFSETIN(KpComCtlDataT, rThreshold), 0, 0L, NULL, 0 }; +static PROPINFO propSThreshold = { "SThreshold", PF_fSetData| PF_fGetData | DT_SHORT, OFFSETIN(KpComCtlDataT, sThreshold), 0, 0L, NULL, 0 }; +static PROPINFO propHandshaking = { "Handshaking", PF_fSetMsg | PF_fGetData | DT_ENUM, OFFSETIN(KpComCtlDataT, handshaking), 0, 0L, szHandshaking, 3 }; +static PROPINFO propInputLen = { "InputLen", PF_fSetData| PF_fGetData | DT_SHORT, OFFSETIN(KpComCtlDataT, inputLen), 0, 0L, NULL, 0 }; +static PROPINFO propInputMode = { "InputMode", PF_fSetData| PF_fGetData | DT_ENUM, OFFSETIN(KpComCtlDataT, inputMode), 0, 0L, szInputMode, 1 }; +static PROPINFO propDTREnable = { "DTREnable", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(KpComCtlDataT, dtrEnable), 0, 1L, NULL, 0 }; +static PROPINFO propRTSEnable = { "RTSEnable", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(KpComCtlDataT, rtsEnable), 0, 1L, NULL, 0 }; static PROPINFO propCDHolding = { "CDHolding", PF_fGetMsg | PF_fNoShow | DT_BOOL, 0, 0, 0L, NULL, 0 }; static PROPINFO propCTSHolding = { "CTSHolding", PF_fGetMsg | PF_fNoShow | DT_BOOL, 0, 0, 0L, NULL, 0 }; static PROPINFO propDSRHolding = { "DSRHolding", PF_fGetMsg | PF_fNoShow | DT_BOOL, 0, 0, 0L, NULL, 0 }; -static PROPINFO propBreak = { "Break", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(MsCommDataT, breakState), 0, 0L, NULL, 0 }; -static PROPINFO propCommEvent = { "CommEvent", PF_fGetData| PF_fNoShow | DT_SHORT, OFFSETIN(MsCommDataT, commEvent), 0, 0L, NULL, 0 }; -static PROPINFO propNullDiscard = { "NullDiscard", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(MsCommDataT, nullDiscard), 0, 0L, NULL, 0 }; -static PROPINFO propEOFEnable = { "EOFEnable", PF_fSetData| PF_fGetData | DT_BOOL, OFFSETIN(MsCommDataT, eofEnable), 0, 0L, NULL, 0 }; +static PROPINFO propBreak = { "Break", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(KpComCtlDataT, breakState), 0, 0L, NULL, 0 }; +static PROPINFO propCommEvent = { "CommEvent", PF_fGetData| PF_fNoShow | DT_SHORT, OFFSETIN(KpComCtlDataT, commEvent), 0, 0L, NULL, 0 }; +static PROPINFO propNullDiscard = { "NullDiscard", PF_fSetMsg | PF_fGetData | DT_BOOL, OFFSETIN(KpComCtlDataT, nullDiscard), 0, 0L, NULL, 0 }; +static PROPINFO propEOFEnable = { "EOFEnable", PF_fSetData| PF_fGetData | DT_BOOL, OFFSETIN(KpComCtlDataT, eofEnable), 0, 0L, NULL, 0 }; static PROPINFO propParityReplace = { "ParityReplace", PF_fSetMsg | PF_fGetMsg | DT_HSZ, 0, 0, 0L, NULL, 0 }; // ----------------------------------------------------------------------- @@ -138,16 +138,16 @@ static PEVENTINFO eventList[] = { // ----------------------------------------------------------------------- // MODEL definition // ----------------------------------------------------------------------- -static char szCtlName[] = "MSComm"; +static char szCtlName[] = "KPComCtl"; -MODEL modelMsComm = { +MODEL modelKpComCtl = { VB300_VERSION, // usVersion MODEL_fInitMsg | MODEL_fInvisAtRun,// fl - (PCTLPROC)MsCommCtlProc, // pctlproc + (PCTLPROC)KpComCtlProc, // pctlproc 0, // fsClassStyle WS_CHILD, // flWndStyle - sizeof(MsCommDataT), // cbCtlExtra - IDB_MSCOMM, // idBmpPalette + sizeof(KpComCtlDataT), // cbCtlExtra + IDB_KPCOMCTL, // idBmpPalette szCtlName, // npszDefCtlName NULL, // npszClassName NULL, // npszParentClassName @@ -169,7 +169,7 @@ MODEL modelMsComm = { // // No VB API calls here, so pData remains valid throughout. // ----------------------------------------------------------------------- -static void closePort(HCTL hctl, MsCommDataT FAR *pData) +static void closePort(HCTL hctl, KpComCtlDataT FAR *pData) { if (pData->commId >= 0) { if (pData->breakState) { @@ -199,7 +199,7 @@ static void closePort(HCTL hctl, MsCommDataT FAR *pData) // WARNING: After this function returns, any previously obtained pData // pointer is INVALID. Callers must re-deref via DEREF(hctl). // ----------------------------------------------------------------------- -static void fireOnComm(HCTL hctl, MsCommDataT FAR *pData, int16_t eventCode) +static void fireOnComm(HCTL hctl, KpComCtlDataT FAR *pData, int16_t eventCode) { pData->commEvent = eventCode; VBFireEvent(hctl, IEVENT_ONCOMM, NULL); @@ -210,7 +210,7 @@ static void fireOnComm(HCTL hctl, MsCommDataT FAR *pData, int16_t eventCode) // ----------------------------------------------------------------------- // handleGetProperty - Process VBM_GETPROPERTY for message-based props // ----------------------------------------------------------------------- -static LONG handleGetProperty(HCTL hctl, MsCommDataT FAR *pData, USHORT iProp) +static LONG handleGetProperty(HCTL hctl, KpComCtlDataT FAR *pData, USHORT iProp) { switch (iProp) { case IPROP_SETTINGS: @@ -308,7 +308,7 @@ static LONG handleGetProperty(HCTL hctl, MsCommDataT FAR *pData, USHORT iProp) // ----------------------------------------------------------------------- // handleSetProperty - Process VBM_SETPROPERTY for message-based props // ----------------------------------------------------------------------- -static LONG handleSetProperty(HCTL hctl, MsCommDataT FAR *pData, USHORT iProp, LONG lp) +static LONG handleSetProperty(HCTL hctl, KpComCtlDataT FAR *pData, USHORT iProp, LONG lp) { int16_t val; @@ -511,7 +511,7 @@ static LONG handleSetProperty(HCTL hctl, MsCommDataT FAR *pData, USHORT iProp, L // ----------------------------------------------------------------------- static void initControlData(HCTL hctl) { - MsCommDataT FAR *pData; + KpComCtlDataT FAR *pData; HSZ hsz; pData = DEREF(hctl); @@ -553,7 +553,7 @@ static void initControlData(HCTL hctl) // Saves all needed control data to locals before VB API calls to avoid // stale pointer issues. Re-derefs when writing results back. // ----------------------------------------------------------------------- -static int16_t openPort(HCTL hctl, MsCommDataT FAR *pData) +static int16_t openPort(HCTL hctl, KpComCtlDataT FAR *pData) { int16_t commId; int16_t port; @@ -653,7 +653,7 @@ static int16_t openPort(HCTL hctl, MsCommDataT FAR *pData) // ----------------------------------------------------------------------- static void processEventNotify(HCTL hctl, int16_t commId) { - MsCommDataT FAR *pData; + KpComCtlDataT FAR *pData; UINT evtMask; evtMask = serialGetEventMask(commId, EV_CTS | EV_DSR | EV_RLSD | EV_RING | EV_ERR | EV_BREAK); @@ -721,7 +721,7 @@ static void processEventNotify(HCTL hctl, int16_t commId) // ----------------------------------------------------------------------- static void processReceiveNotify(HCTL hctl, int16_t commId) { - MsCommDataT FAR *pData; + KpComCtlDataT FAR *pData; COMSTAT stat; pData = DEREF(hctl); @@ -744,7 +744,7 @@ static void processReceiveNotify(HCTL hctl, int16_t commId) // ----------------------------------------------------------------------- static void processTransmitNotify(HCTL hctl, int16_t commId) { - MsCommDataT FAR *pData; + KpComCtlDataT FAR *pData; COMSTAT stat; pData = DEREF(hctl); @@ -796,7 +796,7 @@ LRESULT FAR PASCAL _export NotifyWndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM { if (msg == WM_COMMNOTIFY) { HCTL hctl; - MsCommDataT FAR *pData; + KpComCtlDataT FAR *pData; int16_t commId; UINT notifyCode; @@ -836,9 +836,9 @@ LRESULT FAR PASCAL _export NotifyWndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM // VBX Control procedure // ======================================================================= -LONG FAR PASCAL _export MsCommCtlProc(HCTL hctl, HWND hwnd, USHORT msg, USHORT wp, LONG lp) +LONG FAR PASCAL _export KpComCtlProc(HCTL hctl, HWND hwnd, USHORT msg, USHORT wp, LONG lp) { - MsCommDataT FAR *pData; + KpComCtlDataT FAR *pData; switch (msg) { case VBM_INITIALIZE: @@ -913,7 +913,7 @@ BOOL FAR PASCAL _export VBINITCC(USHORT usVersion, BOOL fRuntime) return FALSE; } - return VBRegisterModel(ghInstance, &modelMsComm); + return VBRegisterModel(ghInstance, &modelKpComCtl); } diff --git a/vbx/mscomm.def b/vbx/kpcomctl.def similarity index 57% rename from vbx/mscomm.def rename to vbx/kpcomctl.def index 1bbf55e..562e193 100644 --- a/vbx/mscomm.def +++ b/vbx/kpcomctl.def @@ -1,7 +1,7 @@ -; mscomm.def - Module definition for MSComm VBX control +; kpcomctl.def - Module definition for KPComCtl VBX control -LIBRARY MSCOMM -DESCRIPTION 'MSComm Serial Communications Control for VB4' +LIBRARY KPCOMCTL +DESCRIPTION 'KPComCtl Serial Communications Control for VB4' EXETYPE WINDOWS CODE PRELOAD MOVEABLE DISCARDABLE diff --git a/vbx/mscomm.h b/vbx/kpcomctl.h similarity index 96% rename from vbx/mscomm.h rename to vbx/kpcomctl.h index 6499424..0f50e74 100644 --- a/vbx/mscomm.h +++ b/vbx/kpcomctl.h @@ -1,14 +1,14 @@ -// mscomm.h - MSComm VBX control definitions +// kpcomctl.h - KPComCtl VBX control definitions // // Property/event IDs, comm event constants, and control instance data. -#ifndef MSCOMM_H -#define MSCOMM_H +#ifndef KPCOMCTL_H +#define KPCOMCTL_H // ----------------------------------------------------------------------- // Resource IDs // ----------------------------------------------------------------------- -#define IDB_MSCOMM 8000 +#define IDB_KPCOMCTL 8000 #ifndef RC_INVOKED @@ -128,12 +128,12 @@ typedef struct { BOOL dsrState; // Shadow state: DSR line level BOOL cdState; // Shadow state: CD (RLSD) line level HSZ hszParityReplace; // Parity error replacement character -} MsCommDataT; +} KpComCtlDataT; // ----------------------------------------------------------------------- // Hidden notification window class name // ----------------------------------------------------------------------- -#define NOTIFY_CLASS "MsCommNotify" +#define NOTIFY_CLASS "KpComCtlNotify" // ----------------------------------------------------------------------- // Global instance handle (set in LibMain) @@ -142,4 +142,4 @@ extern HANDLE ghInstance; #endif // RC_INVOKED -#endif // MSCOMM_H +#endif // KPCOMCTL_H diff --git a/vbx/kpcomctl.rc b/vbx/kpcomctl.rc new file mode 100644 index 0000000..c139a83 --- /dev/null +++ b/vbx/kpcomctl.rc @@ -0,0 +1,7 @@ +// kpcomctl.rc - KPComCtl VBX resource script +// +// Defines the toolbox bitmap displayed in the VB IDE custom controls palette. + +#include "kpcomctl.h" + +IDB_KPCOMCTL BITMAP kpcomctl.bmp diff --git a/vbx/makefile b/vbx/makefile index 4671f56..e924ed3 100644 --- a/vbx/makefile +++ b/vbx/makefile @@ -1,4 +1,4 @@ -# makefile - MSComm VBX control for MSVC 1.52 +# makefile - KPComCtl VBX control for MSVC 1.52 # # Build: nmake # Clean: nmake clean @@ -11,17 +11,14 @@ # The stock Windows 3.1 COMM.DRV enables the 16550 FIFO for receive only, # with a trigger level of 14 (leaving only 2 bytes of headroom). This causes # overruns at baud rates above 9600 under load. For reliable operation at -# 57600 or 115200, install CyberCom V1.1.0.0P -- a freeware drop-in -# replacement included in ..\drivers\CYBERCOM.DRV. It enables both RX and TX -# FIFOs with a trigger level of 8, dramatically reducing interrupt overhead. +# 57600 or 115200, install KPCOMM.DRV (built from ..\drv\) or CyberCom +# V1.1.0.0P (..\drivers\CYBERCOM.DRV). # -# Install: -# 1. Copy ..\drivers\CYBERCOM.DRV to \WINDOWS\SYSTEM -# 2. Edit SYSTEM.INI [boot] section: comm.drv=cybercom.drv +# Install (KPCOMM): +# 1. Copy ..\drv\KPCOMM.DRV to \WINDOWS\SYSTEM +# 2. Edit SYSTEM.INI [boot] section: comm.drv=kpcomm.drv # 3. Add to [386Enh] section: COM1FIFO=1 (for each port in use) # 4. Restart Windows -# -# CyberCom is free for non-commercial use. (C) CyberSoft Corp 1993 CC = cl LINK = link @@ -51,28 +48,28 @@ LFLAGS = /NOD /NOE /AL:16 LIBS = sdllcew libw commdlg vbapi # Output -TARGET = mscomm.vbx +TARGET = kpcomctl.vbx # Objects -OBJS = mscomm.obj serial.obj +OBJS = kpcomctl.obj serial.obj # ----------------------------------------------------------------------- # Build rules # ----------------------------------------------------------------------- all: $(TARGET) -$(TARGET): $(OBJS) mscomm.def mscomm.res vbapi.lib - $(LINK) $(LFLAGS) $(OBJS), $(TARGET),,$(LIBS), mscomm.def - $(RC) mscomm.res $(TARGET) +$(TARGET): $(OBJS) kpcomctl.def kpcomctl.res vbapi.lib + $(LINK) $(LFLAGS) $(OBJS), $(TARGET),,$(LIBS), kpcomctl.def + $(RC) kpcomctl.res $(TARGET) -mscomm.obj: mscomm.c mscomm.h vbapi.h serial.h - $(CC) $(CFLAGS) mscomm.c +kpcomctl.obj: kpcomctl.c kpcomctl.h vbapi.h serial.h + $(CC) $(CFLAGS) kpcomctl.c serial.obj: serial.c serial.h $(CC) $(CFLAGS) serial.c -mscomm.res: mscomm.rc mscomm.h mscomm.bmp - $(RC) -r mscomm.rc +kpcomctl.res: kpcomctl.rc kpcomctl.h kpcomctl.bmp + $(RC) -r kpcomctl.rc # ----------------------------------------------------------------------- # Generate VBAPI.LIB from vbapi.def if not present diff --git a/vbx/mscomm.rc b/vbx/mscomm.rc deleted file mode 100644 index 8af4455..0000000 --- a/vbx/mscomm.rc +++ /dev/null @@ -1,7 +0,0 @@ -// mscomm.rc - MSComm VBX resource script -// -// Defines the toolbox bitmap displayed in the VB IDE custom controls palette. - -#include "mscomm.h" - -IDB_MSCOMM BITMAP mscomm.bmp