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.
719 lines
28 KiB
719 lines
28 KiB
/*++
|
|
|
|
Copyright (c) 1996-2002 Microsoft Corp. & Ricoh Co., Ltd. All rights reserved.
|
|
|
|
FILE: RPDLDLG.CPP
|
|
|
|
Abstract: Add OEM Page (FAX)
|
|
|
|
Functions: FaxPageProc
|
|
|
|
Environment: Windows NT Unidrv5 driver
|
|
|
|
Revision History:
|
|
10/20/98 -Masatoshi Kubokura-
|
|
Last modified for Windows2000.
|
|
08/30/99 -Masatoshi Kubokura-
|
|
Began to modify for NT4SP6(Unidrv5.4).
|
|
09/02/99 -Masatoshi Kubokura-
|
|
Last modified for NT4SP6.
|
|
10/05/2000 -Masatoshi Kubokura-
|
|
Last modified for XP inbox.
|
|
03/04/2002 -Masatoshi Kubokura-
|
|
Include strsafe.h.
|
|
Use safe_sprintfW() instead of wsprintfW().
|
|
Use OemToCharBuff() instead of OemToChar().
|
|
04/01/2002 -Masatoshi Kubokura-
|
|
Use safe_strlenW() instead of lstrlen().
|
|
|
|
--*/
|
|
|
|
#include "pdev.h"
|
|
#include "resource.h"
|
|
#include <prsht.h>
|
|
#ifndef WINNT_40
|
|
#include "strsafe.h" // @Mar/01/2002
|
|
#endif // !WINNT_40
|
|
|
|
extern HINSTANCE ghInstance; // MSKK 98/10/08
|
|
|
|
WORD wFaxResoStrID[3] = {
|
|
IDS_RPDL_FAX_RESO_SUPER,
|
|
IDS_RPDL_FAX_RESO_FINE,
|
|
IDS_RPDL_FAX_RESO_COARSE
|
|
};
|
|
|
|
WORD wFaxChStrID[4] = {
|
|
IDS_RPDL_FAX_CH_G3,
|
|
IDS_RPDL_FAX_CH_G4,
|
|
IDS_RPDL_FAX_CH_G3_1,
|
|
IDS_RPDL_FAX_CH_G3_2
|
|
};
|
|
#define FAXCH_G4 1
|
|
|
|
|
|
extern "C" {
|
|
// External Functions' prototype
|
|
extern INT safe_sprintfW(wchar_t* pszDest, size_t cchDest, const wchar_t* pszFormat, ...);
|
|
extern INT safe_strlenW(wchar_t* psz, size_t cchMax);
|
|
|
|
// Local Functions' prototype
|
|
INT_PTR APIENTRY FaxPageProc(HWND, UINT, WPARAM, LPARAM);
|
|
INT_PTR APIENTRY FaxSubDialog(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : InitMainDlg
|
|
***************************************************************************/
|
|
VOID InitMainDlg(
|
|
HWND hDlg,
|
|
PUIDATA pUiData)
|
|
{
|
|
// initialize check box (send fax, clear fax number after send)
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_SEND, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SEND), 0);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_CLRNUM, BM_SETCHECK,
|
|
BITTEST32(pUiData->fUiOption, HOLD_OPTIONS)? 0 : 1, 0);
|
|
|
|
// initialize edit box
|
|
SetDlgItemText(hDlg, IDC_EDIT_FAXNUM, pUiData->FaxNumBuf);
|
|
SendDlgItemMessage(hDlg, IDC_EDIT_FAXNUM, EM_LIMITTEXT, FAXBUFSIZE256-1, 0);
|
|
SetDlgItemText(hDlg, IDC_EDIT_EXTNUM, pUiData->FaxExtNumBuf);
|
|
SendDlgItemMessage(hDlg, IDC_EDIT_EXTNUM, EM_LIMITTEXT, FAXEXTNUMBUFSIZE-1, 0);
|
|
} //*** InitMainDlg
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : InitSubDlg
|
|
***************************************************************************/
|
|
VOID InitSubDlg(
|
|
HWND hDlg,
|
|
PUIDATA pUiData)
|
|
{
|
|
WORD num;
|
|
WCHAR wcTmp[64];
|
|
|
|
// initialize edit box
|
|
num = (pUiData->FaxSendTime[0] == 0)? FAXTIMEBUFSIZE : 0;
|
|
SetDlgItemText(hDlg, IDC_EDIT_HOUR, pUiData->FaxSendTime);
|
|
SendDlgItemMessage(hDlg, IDC_EDIT_HOUR, EM_LIMITTEXT, 2, 0);
|
|
SetDlgItemText(hDlg, IDC_EDIT_MINUTE, &pUiData->FaxSendTime[3]);
|
|
SendDlgItemMessage(hDlg, IDC_EDIT_MINUTE, EM_LIMITTEXT, 2, 0);
|
|
// next while loop must be after SetDlgItemText(IDC_EDIT_xxx)
|
|
while (num-- > 0)
|
|
pUiData->FaxSendTime[num] = 0;
|
|
|
|
// initialize combo box (FAX resolution, Send channel)
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_RESO, CB_RESETCONTENT, 0, 0);
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_CHANNEL, CB_RESETCONTENT, 0, 0);
|
|
for (num = 0; num < 3; num++)
|
|
{
|
|
LoadString(ghInstance, wFaxResoStrID[num], wcTmp, 64);
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_RESO, CB_ADDSTRING, 0, (LPARAM)wcTmp);
|
|
}
|
|
for (num = 0; num < 4; num++)
|
|
{
|
|
LoadString(ghInstance, wFaxChStrID[num], wcTmp, 64);
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_CHANNEL, CB_ADDSTRING, 0, (LPARAM)wcTmp);
|
|
}
|
|
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_RESO, CB_SETCURSEL, pUiData->FaxReso, 0);
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_CHANNEL, CB_SETCURSEL, pUiData->FaxCh, 0);
|
|
|
|
// initialize check box (set time, set simultaneous print)
|
|
if (BITTEST32(pUiData->fUiOption, FAX_SETTIME))
|
|
{
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_TIME, BM_SETCHECK, 1, 0);
|
|
}
|
|
else
|
|
{
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_TIME, BM_SETCHECK, 0, 0);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_HOUR), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_MINUTE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_HOUR), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_MINUTE), FALSE);
|
|
}
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_PRINT, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SIMULPRINT), 0);
|
|
|
|
// initialize radio button (send RPDL command, use MH)
|
|
CheckRadioButton(hDlg, IDC_RADIO_CMD_OFF, IDC_RADIO_CMD_ON,
|
|
BITTEST32(pUiData->fUiOption, FAX_RPDLCMD)?
|
|
IDC_RADIO_CMD_ON:IDC_RADIO_CMD_OFF);
|
|
CheckRadioButton(hDlg, IDC_RADIO_MH_OFF, IDC_RADIO_MH_ON,
|
|
BITTEST32(pUiData->fUiOption, FAX_MH)?
|
|
IDC_RADIO_MH_ON:IDC_RADIO_MH_OFF);
|
|
} //*** InitSubDlg
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : StoreSubDialogInfo
|
|
store option dialog infomation
|
|
***************************************************************************/
|
|
VOID StoreSubDialogInfo(
|
|
PUIDATA pUiData)
|
|
{
|
|
WORD num = FAXTIMEBUFSIZE;
|
|
LPWSTR lpDst = pUiData->FaxSendTimeTmp, lpSrc = pUiData->FaxSendTime;
|
|
|
|
while (num-- > 0)
|
|
*lpDst++ = *lpSrc++;
|
|
pUiData->FaxResoTmp = pUiData->FaxReso;
|
|
pUiData->FaxChTmp = pUiData->FaxCh;
|
|
pUiData->fUiOptionTmp = pUiData->fUiOption;
|
|
} //*** StoreSubDialogInfo
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : ResumeSubDialogInfo
|
|
resume option dialog infomation
|
|
***************************************************************************/
|
|
VOID ResumeSubDialogInfo(
|
|
PUIDATA pUiData)
|
|
{
|
|
WORD num = FAXTIMEBUFSIZE;
|
|
LPWSTR lpDst = pUiData->FaxSendTime, lpSrc = pUiData->FaxSendTimeTmp;
|
|
|
|
while (num-- > 0)
|
|
*lpDst++ = *lpSrc++;
|
|
pUiData->FaxReso = pUiData->FaxResoTmp;
|
|
pUiData->FaxCh = pUiData->FaxChTmp;
|
|
pUiData->fUiOption = pUiData->fUiOptionTmp;
|
|
} //*** ResumeSubDialogInfo
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : GetInfoFromOEMPdev
|
|
get fax data from private devmode
|
|
***************************************************************************/
|
|
VOID GetInfoFromOEMPdev(PUIDATA pUiData)
|
|
{
|
|
POEMUD_EXTRADATA pOEMExtra = pUiData->pOEMExtra;
|
|
BYTE TmpBuf[FAXTIMEBUFSIZE];
|
|
|
|
// if previous fax is finished and hold-options flag isn't valid,
|
|
// reset private devmode
|
|
if (BITTEST32(pOEMExtra->fUiOption, PRINT_DONE) &&
|
|
!BITTEST32(pOEMExtra->fUiOption, HOLD_OPTIONS))
|
|
{
|
|
WORD num;
|
|
|
|
pOEMExtra->FaxReso = pOEMExtra->FaxCh = 0;
|
|
for (num = 0; num < FAXBUFSIZE256; num++)
|
|
pOEMExtra->FaxNumBuf[num] = 0;
|
|
for (num = 0; num < FAXEXTNUMBUFSIZE; num++)
|
|
pOEMExtra->FaxExtNumBuf[num] = 0;
|
|
for (num = 0; num < FAXTIMEBUFSIZE; num++)
|
|
pOEMExtra->FaxSendTime[num] = 0;
|
|
BITCLR32(pOEMExtra->fUiOption, FAX_SEND);
|
|
BITCLR32(pOEMExtra->fUiOption, FAX_SETTIME);
|
|
BITCLR32(pOEMExtra->fUiOption, FAX_SIMULPRINT);
|
|
BITCLR32(pOEMExtra->fUiOption, FAX_MH);
|
|
BITCLR32(pOEMExtra->fUiOption, FAX_RPDLCMD);
|
|
// do not clear PRINT_DONE flag here
|
|
}
|
|
|
|
// copy fax flag
|
|
pUiData->fUiOption = pOEMExtra->fUiOption;
|
|
|
|
// ascii to unicode
|
|
// @Mar/04/2002 ->
|
|
// OemToChar((LPSTR)pOEMExtra->FaxNumBuf, pUiData->FaxNumBuf);
|
|
// OemToChar((LPSTR)pOEMExtra->FaxExtNumBuf, pUiData->FaxExtNumBuf);
|
|
OemToCharBuff((LPSTR)pOEMExtra->FaxNumBuf, pUiData->FaxNumBuf, FAXBUFSIZE256);
|
|
OemToCharBuff((LPSTR)pOEMExtra->FaxExtNumBuf, pUiData->FaxExtNumBuf, FAXEXTNUMBUFSIZE);
|
|
// @Mar/04/2002 <-
|
|
|
|
// modfify time string from "hhmm" to "hh"+"mm"
|
|
TmpBuf[0] = pOEMExtra->FaxSendTime[0];
|
|
TmpBuf[1] = pOEMExtra->FaxSendTime[1];
|
|
TmpBuf[2] = TmpBuf[5] = 0;
|
|
TmpBuf[3] = pOEMExtra->FaxSendTime[2];
|
|
TmpBuf[4] = pOEMExtra->FaxSendTime[3];
|
|
// @Mar/04/2002 ->
|
|
// OemToChar((LPSTR)&TmpBuf[0], &(pUiData->FaxSendTime[0]));
|
|
// OemToChar((LPSTR)&TmpBuf[3], &(pUiData->FaxSendTime[3]));
|
|
OemToCharBuff((LPSTR)&TmpBuf[0], &(pUiData->FaxSendTime[0]), FAXTIMEBUFSIZE);
|
|
OemToCharBuff((LPSTR)&TmpBuf[3], &(pUiData->FaxSendTime[3]), FAXTIMEBUFSIZE - 3);
|
|
// @Mar/04/2002 <-
|
|
|
|
pUiData->FaxReso = pOEMExtra->FaxReso;
|
|
pUiData->FaxCh = pOEMExtra->FaxCh;
|
|
} //*** GetInfoFromOEMPdev
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : SetInfoToOEMPdev
|
|
set fax data to private devmode
|
|
***************************************************************************/
|
|
VOID SetInfoToOEMPdev(PUIDATA pUiData)
|
|
{
|
|
POEMUD_EXTRADATA pOEMExtra = pUiData->pOEMExtra;
|
|
BYTE TmpBuf[FAXTIMEBUFSIZE];
|
|
|
|
if (!BITTEST32(pUiData->fUiOption, FAXMAINDLG_UPDATED))
|
|
return;
|
|
|
|
// unicode to ascii
|
|
CharToOem(pUiData->FaxNumBuf, (LPSTR)pOEMExtra->FaxNumBuf);
|
|
CharToOem(pUiData->FaxExtNumBuf, (LPSTR)pOEMExtra->FaxExtNumBuf);
|
|
|
|
// if only main dialog is changed
|
|
if (!BITTEST32(pUiData->fUiOption, FAXSUBDLG_UPDATE_APPLIED))
|
|
{
|
|
// copy fax flag
|
|
BITCPY32(pOEMExtra->fUiOption, pUiData->fUiOption, FAX_SEND); // (dst, src, bit)
|
|
BITCPY32(pOEMExtra->fUiOption, pUiData->fUiOption, HOLD_OPTIONS);
|
|
BITCPY32(pOEMExtra->fUiOption, pUiData->fUiOption, PRINT_DONE); // @Sep/25/2001
|
|
}
|
|
// if sub dialog is also changed
|
|
else
|
|
{
|
|
// copy fax flag
|
|
pOEMExtra->fUiOption = pUiData->fUiOption;
|
|
BITCLR32(pOEMExtra->fUiOption, FAXMAINDLG_UPDATED);
|
|
BITCLR32(pOEMExtra->fUiOption, FAXSUBDLG_UPDATED);
|
|
BITCLR32(pOEMExtra->fUiOption, FAXSUBDLG_UPDATE_APPLIED);
|
|
BITCLR32(pOEMExtra->fUiOption, FAXSUBDLG_INITDONE);
|
|
|
|
// modfify time string from "hh"+"mm" to "hhmm"
|
|
CharToOem(&(pUiData->FaxSendTime[0]), (LPSTR)&TmpBuf[0]);
|
|
CharToOem(&(pUiData->FaxSendTime[3]), (LPSTR)&TmpBuf[3]);
|
|
// hour
|
|
if (TmpBuf[1] == 0) // 1 number
|
|
{
|
|
pOEMExtra->FaxSendTime[0] = '0';
|
|
pOEMExtra->FaxSendTime[1] = TmpBuf[0];
|
|
}
|
|
else
|
|
{
|
|
pOEMExtra->FaxSendTime[0] = TmpBuf[0];
|
|
pOEMExtra->FaxSendTime[1] = TmpBuf[1];
|
|
}
|
|
// minute
|
|
if (TmpBuf[3] == 0) // nothing set
|
|
{
|
|
pOEMExtra->FaxSendTime[2] = pOEMExtra->FaxSendTime[3] = '0';
|
|
}
|
|
else if (TmpBuf[4] == 0) // 1 number
|
|
{
|
|
pOEMExtra->FaxSendTime[2] = '0';
|
|
pOEMExtra->FaxSendTime[3] = TmpBuf[3];
|
|
}
|
|
else
|
|
{
|
|
pOEMExtra->FaxSendTime[2] = TmpBuf[3];
|
|
pOEMExtra->FaxSendTime[3] = TmpBuf[4];
|
|
}
|
|
pOEMExtra->FaxSendTime[4] = 0;
|
|
|
|
pOEMExtra->FaxReso = pUiData->FaxReso;
|
|
pOEMExtra->FaxCh = pUiData->FaxCh;
|
|
}
|
|
return;
|
|
} //*** SetInfoToOEMPdev
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : FaxPageProc
|
|
|
|
Parameters : HWND hDlg Handle of this Dialog
|
|
UINT uMessage
|
|
WPARAM wParam
|
|
LPARAM lParam
|
|
|
|
Modify Note : Make this for Win95 minidriver. Jun/05/96 Kubokura
|
|
Modify. Sep/22/98 Kubokura
|
|
***************************************************************************/
|
|
INT_PTR APIENTRY FaxPageProc(
|
|
HWND hDlg,
|
|
UINT uMessage,
|
|
WPARAM wParam,
|
|
LPARAM lParam)
|
|
{
|
|
PUIDATA pUiData;
|
|
WORD fModified = FALSE;
|
|
|
|
switch (uMessage)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pUiData = (PUIDATA)((LPPROPSHEETPAGE)lParam)->lParam;
|
|
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)pUiData);
|
|
|
|
// get fax data from private devmode
|
|
GetInfoFromOEMPdev(pUiData);
|
|
|
|
InitMainDlg(hDlg, pUiData);
|
|
BITCLR32(pUiData->fUiOption, FAXMAINDLG_UPDATED);
|
|
BITCLR32(pUiData->fUiOption, FAXSUBDLG_UPDATE_APPLIED); // @Oct/02/98
|
|
BITCLR32(pUiData->fUiOption, FAXSUBDLG_INITDONE); // @Sep/29/98
|
|
#ifdef WINNT_40 // @Sep/02/99
|
|
// Disable FAX tab options when user has no permission.
|
|
if (BITTEST32(pUiData->fUiOption, UIPLUGIN_NOPERMISSION))
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXMAIN_1), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXMAIN_2), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXMAIN_3), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXMAIN_4), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_CHECK_SEND), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_FAXNUM), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_EXTNUM), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDD_OPTION), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDD_FAXMAIN_DEFAULT), FALSE);
|
|
// @Sep/21/2001 ->
|
|
// EnableWindow(GetDlgItem(hDlg, IDC_LABEL_CLRNUM), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_CHECK_CLRNUM), FALSE);
|
|
// @Sep/21/2001 <-
|
|
}
|
|
#endif // WINNT_40
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
pUiData = (PUIDATA)GetWindowLongPtr(hDlg, DWLP_USER);
|
|
switch(LOWORD(wParam))
|
|
{
|
|
case IDC_CHECK_SEND:
|
|
if (BITTEST32(pUiData->fUiOption, FAX_SEND))
|
|
BITCLR32(pUiData->fUiOption, FAX_SEND);
|
|
else
|
|
BITSET32(pUiData->fUiOption, FAX_SEND);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_SEND, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SEND), 0);
|
|
fModified = TRUE;
|
|
break;
|
|
|
|
case IDC_CHECK_CLRNUM:
|
|
if (BITTEST32(pUiData->fUiOption, HOLD_OPTIONS))
|
|
BITCLR32(pUiData->fUiOption, HOLD_OPTIONS);
|
|
else
|
|
BITSET32(pUiData->fUiOption, HOLD_OPTIONS);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_CLRNUM, BM_SETCHECK,
|
|
BITTEST32(pUiData->fUiOption, HOLD_OPTIONS)? 0 : 1, 0);
|
|
fModified = TRUE;
|
|
break;
|
|
|
|
case IDC_EDIT_FAXNUM:
|
|
{
|
|
int old_len = safe_strlenW(pUiData->FaxNumBuf, FAXBUFSIZE256);
|
|
|
|
GetDlgItemText(hDlg, IDC_EDIT_FAXNUM, pUiData->FaxNumBuf,
|
|
FAXBUFSIZE256);
|
|
if (old_len != safe_strlenW(pUiData->FaxNumBuf, FAXBUFSIZE256))
|
|
fModified = TRUE;
|
|
}
|
|
break;
|
|
|
|
case IDC_EDIT_EXTNUM:
|
|
{
|
|
int old_len = safe_strlenW(pUiData->FaxExtNumBuf, FAXEXTNUMBUFSIZE);
|
|
|
|
GetDlgItemText(hDlg, IDC_EDIT_EXTNUM, pUiData->FaxExtNumBuf,
|
|
FAXEXTNUMBUFSIZE);
|
|
if (old_len != safe_strlenW(pUiData->FaxExtNumBuf, FAXEXTNUMBUFSIZE))
|
|
fModified = TRUE;
|
|
}
|
|
break;
|
|
|
|
// set option button
|
|
case IDD_OPTION:
|
|
if(ghInstance)
|
|
{
|
|
//DLGPROC lpDlgFunc = (DLGPROC)MakeProcInstance(FaxSubDialog, ghInstance); // add (DLGPROC) @Aug/30/99
|
|
|
|
DialogBoxParam(ghInstance, MAKEINTRESOURCE(IDD_FAXSUB),
|
|
hDlg, FaxSubDialog, (LPARAM)pUiData);
|
|
// hDlg, lpDlgFunc, (LPARAM)pUiData);
|
|
//FreeProcInstance(lpDlgFunc);
|
|
fModified = TRUE;
|
|
}
|
|
break;
|
|
|
|
// set defaults button
|
|
case IDD_FAXMAIN_DEFAULT:
|
|
pUiData->FaxNumBuf[0] =
|
|
pUiData->FaxExtNumBuf[0] = 0;
|
|
BITCLR32(pUiData->fUiOption, FAX_SEND);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_SEND, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SEND), 0);
|
|
BITCLR32(pUiData->fUiOption, HOLD_OPTIONS);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_CLRNUM, BM_SETCHECK,
|
|
BITTEST32(pUiData->fUiOption, HOLD_OPTIONS)? 0 : 1, 0);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_FAXNUM), TRUE);
|
|
SetDlgItemText(hDlg, IDC_EDIT_FAXNUM, pUiData->FaxNumBuf);
|
|
SetDlgItemText(hDlg, IDC_EDIT_EXTNUM, pUiData->FaxExtNumBuf);
|
|
fModified = TRUE;
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
case WM_NOTIFY:
|
|
pUiData = (PUIDATA)GetWindowLongPtr(hDlg, DWLP_USER);
|
|
{
|
|
NMHDR FAR *lpnmhdr = (NMHDR FAR *)lParam;
|
|
|
|
switch (lpnmhdr->code)
|
|
{
|
|
WORD num;
|
|
|
|
case PSN_SETACTIVE:
|
|
break;
|
|
|
|
// In case of PSN_KILLACTIVE, return FALSE to get PSN_APPLY.
|
|
case PSN_KILLACTIVE: // this is when user pushs OK/APPLY button.(1)
|
|
VERBOSE((DLLTEXT("** FaxPageProc: PSN_KILLACTIVE **\n")));
|
|
BITSET32(pUiData->fUiOption, FAXMAINDLG_UPDATED); // @Sep/29/98
|
|
if (BITTEST32(pUiData->fUiOption, FAXSUBDLG_UPDATED)) // @Oct/02/98
|
|
BITSET32(pUiData->fUiOption, FAXSUBDLG_UPDATE_APPLIED);
|
|
return FALSE;
|
|
|
|
case PSN_APPLY: // this is when user pushs OK/APPLY button.(2)
|
|
VERBOSE((DLLTEXT("** FaxPageProc: PSN_APPLY **\n")));
|
|
// clear PRINT_DONE flag of private devmode @Oct/20/98
|
|
if (BITTEST32(pUiData->fUiOption, PRINT_DONE)) // eliminate mid pOEMExtra-> @Sep/22/2000
|
|
{
|
|
BITCLR32(pUiData->fUiOption, PRINT_DONE); // eliminate mid pOEMExtra-> @Sep/22/2000
|
|
VERBOSE(("** Delete file: %ls **\n", pUiData->pOEMExtra->SharedFileName));
|
|
DeleteFile(pUiData->pOEMExtra->SharedFileName);
|
|
}
|
|
|
|
// set shared data to private devmode @Oct/15/98
|
|
SetInfoToOEMPdev(pUiData);
|
|
|
|
// update private devmode @Oct/15/98
|
|
pUiData->pfnComPropSheet(pUiData->hComPropSheet,
|
|
CPSFUNC_SET_RESULT,
|
|
(LPARAM)pUiData->hPropPage,
|
|
(LPARAM)CPSUI_OK);
|
|
VERBOSE((DLLTEXT("** PSN_APPLY fUiOption=%x **\n"), pUiData->fUiOption));
|
|
break;
|
|
|
|
case PSN_RESET: // this is when user pushs CANCEL button
|
|
VERBOSE((DLLTEXT("** FaxPageProc: PSN_RESET **\n")));
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
// activate APPLY button
|
|
if (fModified)
|
|
PropSheet_Changed(GetParent(hDlg), hDlg);
|
|
return TRUE;
|
|
} //*** FaxPageProc
|
|
|
|
|
|
/***************************************************************************
|
|
Function Name : FaxSubDialog
|
|
|
|
Parameters : HWND hDlg Handle of this Dialog
|
|
UINT uMessage
|
|
WPARAM wParam
|
|
LPARAM lParam
|
|
|
|
Modify Note : Make this for Win95 minidriver. Jun/05/96 Kubokura
|
|
Modify. Sep/22/98 Kubokura
|
|
***************************************************************************/
|
|
INT_PTR APIENTRY FaxSubDialog(
|
|
HWND hDlg,
|
|
UINT uMessage,
|
|
WPARAM wParam,
|
|
LPARAM lParam)
|
|
{
|
|
PUIDATA pUiData;
|
|
|
|
switch (uMessage)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pUiData = (PUIDATA)lParam;
|
|
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)pUiData);
|
|
|
|
// if right after opening this dialog
|
|
if (!BITTEST32(pUiData->fUiOption, FAXSUBDLG_INITDONE))
|
|
{
|
|
BITSET32(pUiData->fUiOption, FAXSUBDLG_INITDONE);
|
|
StoreSubDialogInfo(pUiData);
|
|
}
|
|
else
|
|
{
|
|
ResumeSubDialogInfo(pUiData);
|
|
}
|
|
InitSubDlg(hDlg, pUiData);
|
|
BITCLR32(pUiData->fUiOption, FAXSUBDLG_UPDATED);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
pUiData = (PUIDATA)GetWindowLongPtr(hDlg, DWLP_USER);
|
|
switch(LOWORD(wParam))
|
|
{
|
|
WORD num;
|
|
|
|
case IDC_CHECK_TIME:
|
|
if (BITTEST32(pUiData->fUiOption, FAX_SETTIME))
|
|
{
|
|
BITCLR32(pUiData->fUiOption, FAX_SETTIME);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_HOUR), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_MINUTE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_HOUR), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_MINUTE), FALSE);
|
|
}
|
|
else
|
|
{
|
|
BITSET32(pUiData->fUiOption, FAX_SETTIME);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_HOUR), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_MINUTE), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_HOUR), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_MINUTE), TRUE);
|
|
}
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_TIME, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SETTIME), 0);
|
|
break;
|
|
|
|
case IDC_CHECK_PRINT:
|
|
if (BITTEST32(pUiData->fUiOption, FAX_SIMULPRINT))
|
|
BITCLR32(pUiData->fUiOption, FAX_SIMULPRINT);
|
|
else
|
|
BITSET32(pUiData->fUiOption, FAX_SIMULPRINT);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_PRINT, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SIMULPRINT), 0);
|
|
break;
|
|
|
|
case IDC_EDIT_HOUR:
|
|
{
|
|
INT hour;
|
|
|
|
// get hour of send time
|
|
GetDlgItemText(hDlg, IDC_EDIT_HOUR, pUiData->FaxSendTime, 3);
|
|
if ((hour = _wtoi(&pUiData->FaxSendTime[0])) < 10)
|
|
safe_sprintfW(&pUiData->FaxSendTime[0], FAXTIMEBUFSIZE, L"0%d", hour);
|
|
else if (hour > 23)
|
|
safe_sprintfW(&pUiData->FaxSendTime[0], FAXTIMEBUFSIZE, L"23");
|
|
}
|
|
break;
|
|
|
|
case IDC_EDIT_MINUTE:
|
|
{
|
|
INT minute;
|
|
|
|
// get minute of send time
|
|
GetDlgItemText(hDlg, IDC_EDIT_MINUTE, &pUiData->FaxSendTime[3], 3);
|
|
if ((minute = _wtoi(&pUiData->FaxSendTime[3])) < 10)
|
|
safe_sprintfW(&pUiData->FaxSendTime[3], FAXTIMEBUFSIZE, L"0%d", minute);
|
|
else if (minute > 59)
|
|
safe_sprintfW(&pUiData->FaxSendTime[3], FAXTIMEBUFSIZE, L"59");
|
|
}
|
|
break;
|
|
|
|
case IDC_COMBO_RESO:
|
|
if (HIWORD(wParam) == CBN_SELCHANGE)
|
|
pUiData->FaxReso = (WORD)SendDlgItemMessage(hDlg, IDC_COMBO_RESO,
|
|
CB_GETCURSEL, 0, 0);
|
|
break;
|
|
|
|
case IDC_COMBO_CHANNEL:
|
|
if (HIWORD(wParam) == CBN_SELCHANGE)
|
|
pUiData->FaxCh = (WORD)SendDlgItemMessage(hDlg, IDC_COMBO_CHANNEL,
|
|
CB_GETCURSEL, 0, 0);
|
|
// if channel is G4, disable send RPDL mode
|
|
if (pUiData->FaxCh == FAXCH_G4)
|
|
{
|
|
BITCLR32(pUiData->fUiOption, FAX_RPDLCMD);
|
|
CheckRadioButton(hDlg, IDC_RADIO_CMD_OFF, IDC_RADIO_CMD_ON,
|
|
IDC_RADIO_CMD_OFF);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_RADIO_CMD_OFF), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_RADIO_CMD_ON), FALSE);
|
|
}
|
|
else
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, IDC_RADIO_CMD_OFF), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_RADIO_CMD_ON), TRUE);
|
|
}
|
|
break;
|
|
|
|
case IDC_RADIO_CMD_OFF:
|
|
BITCLR32(pUiData->fUiOption, FAX_RPDLCMD);
|
|
CheckRadioButton(hDlg, IDC_RADIO_CMD_OFF, IDC_RADIO_CMD_ON,
|
|
IDC_RADIO_CMD_OFF);
|
|
break;
|
|
|
|
case IDC_RADIO_CMD_ON:
|
|
BITSET32(pUiData->fUiOption, FAX_RPDLCMD);
|
|
CheckRadioButton(hDlg, IDC_RADIO_CMD_OFF, IDC_RADIO_CMD_ON,
|
|
IDC_RADIO_CMD_ON);
|
|
break;
|
|
|
|
case IDC_RADIO_MH_OFF:
|
|
BITCLR32(pUiData->fUiOption, FAX_MH);
|
|
CheckRadioButton(hDlg, IDC_RADIO_MH_OFF, IDC_RADIO_MH_ON,
|
|
IDC_RADIO_MH_OFF);
|
|
break;
|
|
|
|
case IDC_RADIO_MH_ON:
|
|
BITSET32(pUiData->fUiOption, FAX_MH);
|
|
CheckRadioButton(hDlg, IDC_RADIO_MH_OFF, IDC_RADIO_MH_ON,
|
|
IDC_RADIO_MH_ON);
|
|
break;
|
|
|
|
// set defaults button
|
|
case IDD_FAXSUB_DEFAULT:
|
|
pUiData->FaxReso = pUiData->FaxCh = 0;
|
|
BITCLR32(pUiData->fUiOption, FAX_SETTIME);
|
|
BITCLR32(pUiData->fUiOption, FAX_SIMULPRINT);
|
|
BITCLR32(pUiData->fUiOption, FAX_MH);
|
|
BITCLR32(pUiData->fUiOption, FAX_RPDLCMD);
|
|
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_TIME, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SETTIME), 0);
|
|
SendDlgItemMessage(hDlg, IDC_CHECK_PRINT, BM_SETCHECK,
|
|
(WORD)TO1BIT(pUiData->fUiOption, FAX_SIMULPRINT), 0);
|
|
SetDlgItemText(hDlg, IDC_EDIT_HOUR, NULL);
|
|
SetDlgItemText(hDlg, IDC_EDIT_MINUTE, NULL);
|
|
// next for loop must be after SetDlgItemText(IDC_EDIT_xxx)
|
|
for (num = 0; num < FAXTIMEBUFSIZE; num++)
|
|
pUiData->FaxSendTime[num] = 0;
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_HOUR), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_EDIT_MINUTE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_HOUR), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_LABEL_FAXSUB_MINUTE), FALSE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_RADIO_CMD_OFF), TRUE);
|
|
EnableWindow(GetDlgItem(hDlg, IDC_RADIO_CMD_ON), TRUE);
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_RESO, CB_SETCURSEL,
|
|
pUiData->FaxReso, 0);
|
|
SendDlgItemMessage(hDlg, IDC_COMBO_CHANNEL, CB_SETCURSEL,
|
|
pUiData->FaxCh, 0);
|
|
CheckRadioButton(hDlg, IDC_RADIO_CMD_OFF, IDC_RADIO_CMD_ON,
|
|
BITTEST32(pUiData->fUiOption, FAX_RPDLCMD)?
|
|
IDC_RADIO_CMD_ON:IDC_RADIO_CMD_OFF);
|
|
CheckRadioButton(hDlg, IDC_RADIO_MH_OFF, IDC_RADIO_MH_ON,
|
|
BITTEST32(pUiData->fUiOption, FAX_MH)?
|
|
IDC_RADIO_MH_ON:IDC_RADIO_MH_OFF);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
ResumeSubDialogInfo(pUiData);
|
|
goto _OPT_END;
|
|
case IDOK:
|
|
StoreSubDialogInfo(pUiData);
|
|
BITSET32(pUiData->fUiOption, FAXSUBDLG_UPDATED);
|
|
_OPT_END:
|
|
EndDialog(hDlg, wParam);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
} //*** FaxSubDialog
|
|
|
|
} // End of extern "C"
|
|
|