mirror of https://github.com/lianthony/NT4.0
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.
408 lines
12 KiB
408 lines
12 KiB
/***************************************************************************
|
|
SCANSTAT.C
|
|
|
|
Purpose: Routines to provide dialog box to either pause or stop the
|
|
scanning of pages. NOTE: The page is completed before the
|
|
scan is function is paused or stopped.
|
|
|
|
$Log: S:\oiwh\scanseq\scanstat.c_v $
|
|
*
|
|
* Rev 1.0 20 Jul 1995 16:35:20 KFS
|
|
* Initial entry
|
|
*
|
|
* Rev 1.3 22 Aug 1994 15:35:44 KFS
|
|
* No code change, added vlog comments to file
|
|
*
|
|
|
|
****************************************************************************/
|
|
// 05-13-93 kfs when fix for scanning to file was modified so the image on
|
|
// the screen was not cleared, the image had to be sent to a
|
|
// new reg window, the code here, attempted to find the
|
|
// through reg image windows, the parent of the child wndw
|
|
// is another reg window, doesn't work well for multiple wndws
|
|
// so put in to use global varible if couldn't find property
|
|
// - global variable may fail for applications scanning to 2
|
|
// windows: since not usually done, seems OK for now
|
|
// 09-02-93 kfs (1) fix on cabinet loss of focus during scan, (2) change
|
|
// PAUSE button to STOP button for cabinet, OiCreateWndw()
|
|
// 04-18-94 kfs if ((wNoRegWndws > 1) && !hScanProp[0]) should be
|
|
// && hScanProp[0], found pause or stop button not working
|
|
/*
|
|
Status Box for File name during scan
|
|
*/
|
|
|
|
#include "nowin.h"
|
|
#include <windows.h>
|
|
|
|
#include "pvundef.h"
|
|
#include "oiscan.h"
|
|
#include "oierror.h"
|
|
#include "oifile.h"
|
|
#include "oidisp.h"
|
|
#include "privapis.h"
|
|
|
|
#include "scandata.h"
|
|
#include "seqrc.h"
|
|
#include "seqdlg.h"
|
|
#include "oiadm.h"
|
|
#include "engdisp.h"
|
|
#include "engadm.h"
|
|
|
|
// This value is the width from scanseq.dlg for the STATBOX
|
|
#define WIDTH_OF_STATBOX 64
|
|
|
|
/* imports */
|
|
|
|
extern HANDLE hLibInst;
|
|
extern char PropName[];
|
|
// Prototype for missing in engadm.h, ??? kfs 6/27/95
|
|
int WINAPI IMGListWndws(LPHANDLE);
|
|
int WINAPI IMGEnumWndws(void);
|
|
|
|
/* exports */
|
|
|
|
/* locals */
|
|
HANDLE IMGFindHandleToPropList(HWND hWnd, LPHANDLE lphRegWndw);
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : FAR */
|
|
/* Issue : Win32 is non-segmented, thus FAR == NEAR == nothing! */
|
|
int CALLBACK ScanStatDlgProc (HWND, int, WPARAM, LONG);
|
|
|
|
static HWND hPropWnd;
|
|
|
|
/* fwd refs */
|
|
|
|
/********************************/
|
|
/* Scan Status Dlg Proc */
|
|
/********************************/
|
|
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : FAR */
|
|
/* Issue : Win32 is non-segmented, thus FAR == NEAR == nothing! */
|
|
int CALLBACK ScanStatDlgProc (hDlg, iMessage, wParam, lParam)
|
|
HWND hDlg;
|
|
int iMessage;
|
|
WPARAM wParam;
|
|
LONG lParam;
|
|
{
|
|
HANDLE sdh;
|
|
LPSCANDATA sdp;
|
|
DWORD flag;
|
|
int nX_left_position; // left x position of dlg box
|
|
HANDLE hRegWndw; // window handle contains the property list
|
|
|
|
switch (iMessage)
|
|
{
|
|
case WM_INITDIALOG:
|
|
sdh = IMGFindHandleToPropList(hDlg, (LPHANDLE)&hRegWndw);
|
|
sdp = (LPSCANDATA)GlobalLock(sdh);
|
|
if (sdp->pause_rect.right == 0)
|
|
{
|
|
LONG lDlgBaseUnits;
|
|
lDlgBaseUnits = GetDialogBaseUnits();
|
|
GetWindowRect((HWND)hRegWndw, &(sdp->pause_rect));
|
|
nX_left_position =
|
|
sdp->pause_rect.right
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : LOWORD */
|
|
/* Issue : Check if LOWORD target is 16- or 32-bit */
|
|
- ((WIDTH_OF_STATBOX * LOWORD(lDlgBaseUnits))/4);
|
|
}
|
|
else
|
|
nX_left_position = sdp->pause_rect.left;
|
|
|
|
SetWindowPos(hDlg, NULL, nX_left_position,
|
|
sdp->pause_rect.top, 0, 0, SWP_NOSIZE);
|
|
|
|
if (sdp->cmd_rect.right)
|
|
{ // Put up button that says "Pause" not "Stop"
|
|
HWND hStopBtn;
|
|
// disable and hide stop btn
|
|
hStopBtn = GetDlgItem(hDlg, IDD_OISTOPBTN);
|
|
EnableWindow(hStopBtn, FALSE);
|
|
ShowWindow(hStopBtn, SW_HIDE);
|
|
}
|
|
else
|
|
{ // Put up button that says "Stop" not "Pause"
|
|
HWND hPauseBtn;
|
|
// disable and hide pause btn
|
|
hPauseBtn = GetDlgItem(hDlg, IDD_PAUSE);
|
|
EnableWindow(hPauseBtn, FALSE);
|
|
ShowWindow(hPauseBtn, SW_HIDE);
|
|
}
|
|
flag = 0;
|
|
flag = IMG_SCKL_STOPSCAN ;
|
|
IMGEnaKeypanel( sdp->sh, (DWORD)(flag), hDlg );
|
|
GlobalUnlock(sdh);
|
|
EnableWindow( hDlg, TRUE );
|
|
SetFocus( hDlg );
|
|
break;
|
|
case WM_SCANEVENT:
|
|
switch (LOWORD(wParam))
|
|
{
|
|
case IMG_SCEK_STOPSCAN:
|
|
sdh = IMGFindHandleToPropList(hDlg, (LPHANDLE)&hRegWndw);
|
|
sdp = (LPSCANDATA)GlobalLock(sdh);
|
|
sdp->stat_pause = TRUE;
|
|
flag = 0;
|
|
IMGEnaKeypanel( sdp->sh, (DWORD)flag, hDlg );
|
|
MessageBeep(0);
|
|
GlobalUnlock(sdh);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
|
|
} /* end command switch */
|
|
break;
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : WM_COMMAND */
|
|
/* Issue : wParam/lParam repacking, refer to tech. ref. for details */
|
|
case WM_COMMAND:
|
|
switch (LOWORD(wParam))
|
|
{
|
|
|
|
case IDD_PAUSE:
|
|
case IDD_OISTOPBTN:
|
|
sdh = IMGFindHandleToPropList(hDlg, (LPHANDLE)&hRegWndw);
|
|
sdp = (LPSCANDATA)GlobalLock(sdh);
|
|
sdp->stat_pause = TRUE;
|
|
flag = 0;
|
|
IMGEnaKeypanel( sdp->sh, (DWORD)flag, hDlg );
|
|
MessageBeep(0);
|
|
GlobalUnlock(sdh);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
|
|
} /* end command switch */
|
|
break;
|
|
|
|
case WM_DESTROY:
|
|
sdh = IMGFindHandleToPropList(hDlg, (LPHANDLE)&hRegWndw);
|
|
sdp = (LPSCANDATA)GlobalLock(sdh);
|
|
GetWindowRect(hDlg, &(sdp->pause_rect));
|
|
GlobalUnlock(sdh);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
} /* end message switch */
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*******************************************/
|
|
/* */
|
|
/* Find Handle to Property List */
|
|
/* */
|
|
/* Purpose: */
|
|
/* */
|
|
/* Find the Prop List Window, may */
|
|
/* not be the Parent window from */
|
|
/* GetParent */
|
|
/* */
|
|
/* Returns: */
|
|
/* */
|
|
/* Handle to Property List */
|
|
/* */
|
|
/* */
|
|
/* Parameters: */
|
|
/* */
|
|
/* hWnd - Handle to Dialog Window */
|
|
/* lphRegWndw - ptr to Reg Wndw handle */
|
|
/* */
|
|
/*******************************************/
|
|
|
|
HANDLE IMGFindHandleToPropList(hWnd, lphRegWndw)
|
|
HWND hWnd; // Dlg box window handle
|
|
LPHANDLE lphRegWndw; // ptr to handle of wndw which has prop
|
|
{ // ... list
|
|
// Define Variable Types
|
|
WORD wNoRegWndws = 0; // no. of reg img windows
|
|
int nRegWndw = 0; // location of reg window in list
|
|
WORD i; // loop variable
|
|
HWND hParentWnd; // Parent Wndw from GetParent(hWnd)
|
|
HWND hRegWndw; // Reg Wndw which may contain Prop list
|
|
HANDLE hScanProp[2]; // HANDLE to Scan Prop List
|
|
static HANDLE hList[20]; // list of reg img window handles
|
|
// ... max of 20 reg windows
|
|
unsigned nMaxAttempts;
|
|
unsigned nLastAttempt;
|
|
|
|
// Start Code
|
|
hParentWnd = GetParent(hWnd); // Get Parent of Window
|
|
hRegWndw = hParentWnd; // 1st time, check if its the parent
|
|
wNoRegWndws = IMGEnumWndws(); // no. of reg image windows
|
|
IMGListWndws((LPHANDLE)&hList[0]); // Get list of reg img windows
|
|
nMaxAttempts = (unsigned)wNoRegWndws - 1;
|
|
nLastAttempt = nMaxAttempts - 1;
|
|
while (!(hScanProp[0] = IMGGetProp(hRegWndw, PropName))) // if 0, property in child hWnd
|
|
{
|
|
// Find the reg window that has the same parent from GetParent(hWnd)
|
|
for (i = nRegWndw; i < wNoRegWndws; i++)
|
|
{
|
|
if (hParentWnd == GetParent((HWND)hList[i]))
|
|
break;
|
|
}
|
|
if (i > nMaxAttempts)
|
|
break; // if we don't find it
|
|
hRegWndw = (HWND)hList[i]; // return the window for the property
|
|
nRegWndw++; // inc so next pass will try new value if hScanProp = 0
|
|
}
|
|
|
|
// IF HAVE MORE THAN ONE REG WINDOW CHECK IF WE ARE USING A COPY AS FOR NO
|
|
// ... DISPLAY AND NO COMPRESSION WHEN USING UISCAN calls
|
|
if ((wNoRegWndws > 1) && hScanProp[0])
|
|
{
|
|
hRegWndw = hList[1];
|
|
for (i = 0; i <= nMaxAttempts; i++)
|
|
{
|
|
if (IsChild(hRegWndw, (HWND)hList[i]))
|
|
{
|
|
hScanProp[1] = IMGGetProp((HWND)hList[i], PropName);
|
|
hRegWndw = (HWND)hList[i]; // use the hWnd for no display window
|
|
if (hScanProp[1]) // if we find a 2nd property, will use it instead
|
|
{
|
|
hScanProp[0] = hScanProp[1]; // use copy of property
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (IsChild((HWND)hList[i], hRegWndw))
|
|
{
|
|
hScanProp[1] = IMGGetProp(hRegWndw, PropName);
|
|
if (hScanProp[1]) // if we find a 2nd property, will use
|
|
{
|
|
hScanProp[0] = hScanProp[1]; // use copy of property
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (i < nLastAttempt)
|
|
hRegWndw = hList[i + 2];
|
|
else
|
|
{
|
|
if (nMaxAttempts != 1)
|
|
hRegWndw = hList[0];
|
|
else
|
|
break;
|
|
}
|
|
} // end of for loop
|
|
}
|
|
|
|
if (!(hRegWndw && hScanProp[0])) // if either null use global
|
|
{
|
|
hRegWndw = hPropWnd;
|
|
hScanProp[0] = IMGGetProp(hRegWndw, PropName);
|
|
}
|
|
|
|
*lphRegWndw = (HANDLE)hRegWndw;
|
|
|
|
return hScanProp[0];
|
|
} // end of IMGFindHandleToPropList
|
|
|
|
/**************************/
|
|
/* Scan Start Stat */
|
|
/**************************/
|
|
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : FAR */
|
|
/* Issue : Win32 is non-segmented, thus FAR == NEAR == nothing! */
|
|
WORD WINAPI IMGUIScanStartStat(hWnd)
|
|
HWND hWnd;
|
|
{
|
|
WORD ret_val;
|
|
HANDLE sdh;
|
|
LPSCANDATA sdp;
|
|
BOOL cpf;
|
|
char template_name[MAXFILESPECLENGTH];
|
|
|
|
//LockData(0);
|
|
|
|
if ((ret_val = IMGScanProp(hWnd, &sdh, &sdp, &cpf)) != IMGSE_SUCCESS)
|
|
goto exit;
|
|
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : READ */
|
|
/* Issue : Replaced by OF_READ */
|
|
ret_val = IMGSE_ALREADY_OPEN;
|
|
if (sdp->hStatDlg != NULL)
|
|
goto exit;
|
|
|
|
hPropWnd = hWnd;
|
|
sdp->stat_pause = FALSE;
|
|
sdp->stat_cpf = cpf;
|
|
|
|
LoadString(hLibInst, IDS_STAT_TEMPLATE, template_name, MAXFILESPECLENGTH);
|
|
sdp->hStatDlg = IMGCreateDialog (hLibInst, template_name, hWnd,
|
|
GetProcAddress (GetModuleHandle("OISSQ400"),
|
|
"ScanStatDlgProc"));
|
|
ret_val = (sdp->hStatDlg == NULL) ? IMGSE_DIALOG : IMGSE_SUCCESS;
|
|
|
|
exit:
|
|
if (sdp)
|
|
GlobalUnlock(sdh);
|
|
|
|
// UnlockData(0);
|
|
return ret_val;
|
|
}
|
|
|
|
/************************/
|
|
/* Scan End Stat */
|
|
/************************/
|
|
|
|
|
|
/* PortTool v2.2 5/1/1995 16:38 */
|
|
/* Found : FAR */
|
|
/* Issue : Win32 is non-segmented, thus FAR == NEAR == nothing! */
|
|
WORD WINAPI IMGUIScanEndStat(hWnd)
|
|
HWND hWnd;
|
|
{
|
|
WORD ret_val;
|
|
HANDLE sdh;
|
|
LPSCANDATA sdp;
|
|
BOOL cpf;
|
|
HWND hParentWnd;
|
|
|
|
// LockData(0);
|
|
|
|
if ((sdh = IMGGetProp(hWnd, PropName)) == NULL)
|
|
return IMGSE_NOT_OPEN;
|
|
if ((sdp = (LPSCANDATA)GlobalLock(sdh)) == NULL)
|
|
return IMGSE_MEMORY;
|
|
|
|
if (sdp->hStatDlg == NULL)
|
|
ret_val = IMGSE_NOT_OPEN;
|
|
else
|
|
{
|
|
hParentWnd = GetParent(hWnd);
|
|
if (!hParentWnd) hParentWnd = hWnd;
|
|
EnableWindow(hParentWnd, TRUE); // enable it so can focus on it instead of dlg
|
|
SetFocus(hParentWnd); // ... so can destroy pause button
|
|
DestroyWindow(sdp->hStatDlg);
|
|
sdp->hStatDlg = NULL;
|
|
EnableWindow(hParentWnd, FALSE); // disable again after the destroy
|
|
ret_val = IMGSE_SUCCESS;
|
|
}
|
|
|
|
cpf = sdp->stat_cpf;
|
|
GlobalUnlock(sdh);
|
|
if (cpf)
|
|
{
|
|
IMGRemoveProp(hWnd, PropName);
|
|
if (sdh)
|
|
GlobalFree(sdh);
|
|
}
|
|
|
|
// UnlockData(0);
|
|
return ret_val;
|
|
}
|