Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

365 lines
7.3 KiB

/*
* testapp.c --
* Xiao Ying Ding
* 1/20/96
*/
#include <windows.h>
#include <commdlg.h>
#include <stdlib.h>
#include <string.h>
#include "tapi.h"
#include "testapp.h"
#define LOW_VERSION 0X10003
#define HIGH_VERSION 0X20000
LONG APIENTRY MainWndProc(HWND, UINT, UINT, LONG);
int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
BOOL APIENTRY MainWndMenuProc(HWND, UINT, UINT, LONG);
void TAPPSendMessage(void);
VOID TappConverRetVal(LONG, char *);
BOOL DoLineInit(void);
BOOL DoLineNegotiateAPIVersion(void);
BOOL DoLineOpen(void);
BOOL DoLineClose(void);
BOOL DoLineShutdown(void);
VOID WINAPI TapiCallback(DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
char *szMainWnd = "Tapi App";
char *szTAPPAppClass = "TAPPAppsClass";
char *szTappMenu = "TappMenu";
HINSTANCE hInst;
HWND hwndMain, hwndEdit;
HMENU hmenu;
LONG lRet = 0L;
char szDebugString[128];
char szRetBuf[128];
LPHLINEAPP lphLineApp;
HLINEAPP hLineApp;
HINSTANCE hInstance;
LINECALLBACK lpfnCallBack;
LPSTR szAppName;
LPTSTR lpszAppName;
DWORD dwNumDevs;
LPDWORD lpdwNumDevs;
DWORD dwDeviceID;
DWORD dwAPILowVersion;
DWORD dwAPIHighVersion;
LPDWORD lpdwAPIVersion;
DWORD dwAPIVersion;
LPLINEEXTENSIONID lpExtensionID;
LINEEXTENSIONID ExtensionID;
LPHLINE lphLine;
HLINE hLine;
DWORD dwExtVersion;
DWORD dwCallbackInstance;
DWORD dwPriviledge;
DWORD dwMediaModes;
LPLINECALLPARAMS lpCallParams;
int APIENTRY // ret errorlevel 0 if successful, else 1
WinMain( // Windows entry point
HINSTANCE hInstance, // instance handle
HINSTANCE hPrevInstance, // previous instance if any
LPSTR lpszCmdLine, // pointer to command line string
int cmdShow) // ShowWindow parameter
{
MSG msg;
WNDCLASS wc;
RECT rect;
if (!hPrevInstance)
{
wc.style = CS_VREDRAW | CS_HREDRAW ;
wc.lpfnWndProc = (WNDPROC)MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance ;
wc.hIcon = LoadIcon((HANDLE)hInstance, NULL);
wc.hCursor = LoadCursor((HANDLE)NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = (LPSTR)szTappMenu;
wc.lpszClassName = (LPSTR)szTAPPAppClass ;
if(!RegisterClass(&wc))
return FALSE;
}
hInst = hInstance;
hwndMain = CreateWindow(
(LPCTSTR)szTAPPAppClass,
(LPCTSTR)szMainWnd,
WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW,
// CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
100, 100, 200, 120,
(HWND)HWND_DESKTOP,
(HMENU)NULL,
(HANDLE)hInstance,
(LPVOID)NULL);
if(!hwndMain)
{
return FALSE;
}
GetClientRect(hwndMain, &rect);
hwndEdit = CreateWindow(
"edit",
"",
WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_READONLY,
rect.left+10, rect.top+10, rect.right-20, rect.bottom-20,
(HWND)hwndMain,
(HMENU)NULL,
(HANDLE)hInstance,
(LPVOID)NULL);
if(!hwndEdit)
{
return FALSE;
}
ShowWindow(hwndMain, cmdShow);
UpdateWindow(hwndMain);
wsprintf((LPTSTR)szDebugString, "Tapi App Start.");
// SendMessage(hwndEdit, EM_SETSEL, (WPARAM)0, (LPARAM)-1);
// SendMessage(hwndEdit, EM_REPLACESEL, 0, (LPARAM) (LPCSTR)szDebugString);
SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) (LPCSTR)szDebugString);
DoLineInit();
DoLineNegotiateAPIVersion();
DoLineOpen();
while (GetMessage((LPMSG)&msg, (HWND)NULL, 0, 0) )
{
TranslateMessage((LPMSG)&msg);
DispatchMessage((LPMSG)&msg);
}
return msg.wParam;
}
LONG APIENTRY MainWndProc(
HWND hwnd, /* Window handle */
UINT message, /* Message */
UINT wParam, /* Varies */
LONG lParam) /* Varies */
{
lRet = 0L;
switch (message)
{
case WM_CREATE:
wsprintf((LPTSTR)szDebugString, "&Tapi App start. \r\n");
TAPPSendMessage();
// DoLineInit();
break;
case WM_COMMAND:
wsprintf((LPTSTR)szDebugString, "# Tapi App start. \r\n");
TAPPSendMessage();
// DoLineInit();
MainWndMenuProc(hwnd, message, wParam, lParam);
break;
case WM_SIZE:
{
int x, y, dx, dy;
x = XEditWnd(0);
y = YEditWnd(0);
dx = DxEditWnd(LOWORD(lParam));
dy = DyEditWnd(HIWORD(lParam));
MoveWindow(hwndEdit, x, y, dx, dy, TRUE);
break;
}
case WM_KEYDOWN:
SendMessage(hwnd, WM_DESTROY, 0, 0);
break;
case WM_DESTROY:
DoLineClose();
DoLineShutdown();
PostQuitMessage(0);
return 0;
default:
lRet = DefWindowProc(hwnd, message, wParam, lParam);
break;
}
return lRet;
}
BOOL APIENTRY CALLBACK MainWndMenuProc(HWND hwnd, UINT message, UINT wParam, LONG lParam)
{
wsprintf((LPTSTR)szDebugString, "Tapi App start. \r\n");
TAPPSendMessage();
hmenu = GetMenu(hwndMain);
switch(wParam)
{
case TAPP_Init:
// DoLineInit();
break;
case TAPP_Exit:
DoLineClose();
DoLineShutdown();
DestroyWindow(hwndMain);
break;
}
return TRUE;
}
BOOL DoLineInit(void)
{
lphLineApp = &hLineApp;
// hInstance = (HINSTANCE) NULL;
lpfnCallBack = (LINECALLBACK)TapiCallback;
szAppName = "tapi app";
lpdwNumDevs = &dwNumDevs;
lpszAppName = &szAppName[0];
hInstance = (HINSTANCE) GetModuleHandle("testapp.exe");
lRet = lineInitialize(lphLineApp, hInstance, lpfnCallBack, (LPCSTR)szAppName, lpdwNumDevs);
TappConverRetVal(lRet, szRetBuf);
wsprintf((LPTSTR)szDebugString, "lineItialize: lRet = %lx\r\n", lRet);
TAPPSendMessage();
return TRUE;
}
BOOL DoLineNegotiateAPIVersion(void)
{
dwDeviceID = 0;
dwAPILowVersion = LOW_VERSION;
dwAPIHighVersion = HIGH_VERSION;
lpdwAPIVersion = &dwAPIVersion;
lpExtensionID = &ExtensionID;
lRet = lineNegotiateAPIVersion( hLineApp,
dwDeviceID,
dwAPILowVersion,
dwAPIHighVersion,
lpdwAPIVersion,
lpExtensionID
);
wsprintf((LPTSTR)szDebugString, "lineNegotiateAPIVersion: lRet = %lx\r\n", lRet);
TAPPSendMessage();
return TRUE;
}
BOOL DoLineOpen(void)
{
lphLine = &hLine;
dwCallbackInstance = 0;
dwPriviledge = LINECALLPRIVILEGE_OWNER;
dwMediaModes = LINEMEDIAMODE_DATAMODEM;
lpCallParams = (LPLINECALLPARAMS) NULL;
lRet = lineOpen(hLineApp,
dwDeviceID,
lphLine,
dwAPIVersion,
dwExtVersion,
dwCallbackInstance,
dwPriviledge,
dwMediaModes,
lpCallParams
);
wsprintf((LPTSTR)szDebugString, "lineOpen: lRet = %lx\r\n", lRet);
TAPPSendMessage();
return TRUE;
}
BOOL DoLineClose(void)
{
lRet = lineClose(*lphLine);
wsprintf((LPTSTR)szDebugString, "lineClose: lRet = %lx\r\n", lRet);
TAPPSendMessage();
return TRUE;
}
BOOL DoLineShutdown(void)
{
lRet = lineShutdown(*lphLineApp);
wsprintf((LPTSTR)szDebugString, "lineShutdown: lRet = %lx\r\n", lRet);
TAPPSendMessage();
return TRUE;
}
void TAPPSendMessage(void)
{
// SendMessage(hwndEdit, EM_SETSEL, (WPARAM)-1, (LPARAM)0);
//SendMessage(hwndEdit, EM_REPLACESEL, 0, (LPARAM) (LPCTSTR) szDebugString);
SendMessage(hwndEdit, WM_SETTEXT, 0, (LPARAM) (LPCSTR)szDebugString);
}
VOID TappConverRetVal(LONG lret, char *szRetBuf)
{
switch(lret)
{
case LINEERR_INVALAPPNAME:
strcpy((LPTSTR)szRetBuf, "LINEERR_INVALAPPNAME");
break;
case LINEERR_INIFILECORRUPT:
strcpy((LPTSTR)szRetBuf, "LINEERR_INIFILECORRUPT");
break;
}
}
VOID
WINAPI
TapiCallback(
DWORD hDevice,
DWORD dwMsg,
DWORD dwCallbackInstance,
DWORD dwParam1,
DWORD dwParam2,
DWORD dwParam3
)
{
}