예제 #1
0
VOID UnloadHdwFilterDlg(HWND hwnd,DCB *pstComDCB)
  {
  char szReplaceChar[5];

  WinQueryDlgItemText(hwnd,HWR_ERRCHAR,3,szReplaceChar);
  pstComDCB->ErrChar = (BYTE)ASCIItoBin(szReplaceChar,16);

  WinQueryDlgItemText(hwnd,HWR_BRKCHAR,3,szReplaceChar);
  pstComDCB->BrkChar = (BYTE)ASCIItoBin(szReplaceChar,16);

  if (Checked(hwnd,HWR_ENABERR))
    pstComDCB->Flags2 |= F2_ENABLE_ERROR_REPL;
  else
    pstComDCB->Flags2 &= ~F2_ENABLE_ERROR_REPL;

  if (Checked(hwnd,HWR_ENABBRK))
    pstComDCB->Flags2 |= F2_ENABLE_BREAK_REPL;
  else
    pstComDCB->Flags2 &= ~F2_ENABLE_BREAK_REPL;

  if (Checked(hwnd,HWR_ENABNUL))
    pstComDCB->Flags2 |= F2_ENABLE_NULL_STRIP;
  else
    pstComDCB->Flags2 &= ~F2_ENABLE_NULL_STRIP;
  }
예제 #2
0
void UnloadHdwTimeoutDlg(HWND hwnd,DCB *pstComDCB)
  {
  char szTimeout[9];

  if (Checked(hwnd,HWT_WINF))
    pstComDCB->Flags3 |= F3_INFINITE_WRT_TIMEOUT;
  else
    pstComDCB->Flags3 &= ~F3_INFINITE_WRT_TIMEOUT;

  WinQueryDlgItemText(hwnd,HWT_WTIME,6,szTimeout);
  pstComDCB->WrtTimeout = (WORD)atol(szTimeout);

  pstComDCB->Flags3 &= ~F3_RTO_MASK;
  if (Checked(hwnd,HWT_RNOWAIT))
    pstComDCB->Flags3 |= F3_WAIT_NONE;
  else
    {
    if (Checked(hwnd,HWT_RWAITSOME))
      pstComDCB->Flags3 |= F3_WAIT_SOMETHING;
    else
      pstComDCB->Flags3 |= F3_WAIT_NORM;
    }
  WinQueryDlgItemText(hwnd,HWT_RTIME,6,szTimeout);
  pstComDCB->ReadTimeout = (WORD)atol(szTimeout);
  }
예제 #3
0
MRESULT EXPENTRY fnwpLogonDlg(HWND hwnd,USHORT msg,MPARAM mp1,MPARAM mp2)
  {
  static LOGON *pstLogon;

  switch (msg)
    {
    case WM_INITDLG:
      pstLogon = (LOGON *)mp2;
      WinSendDlgItemMsg(hwnd,LOG_USERID,EM_SETTEXTLIMIT,MPFROMSHORT(40),(MPARAM)NULL);
      WinSetDlgItemText(hwnd,LOG_USERID,pstLogon->szUserName);
      WinSendDlgItemMsg(hwnd,LOG_PASSWORD,EM_SETTEXTLIMIT,MPFROMSHORT(40),(MPARAM)NULL);
      WinSetDlgItemText(hwnd,LOG_PASSWORD,pstLogon->szPassword);
      break;
    case WM_COMMAND:
      switch(SHORT1FROMMP(mp1))
        {
        case DID_OK:
          WinQueryDlgItemText(hwnd,LOG_USERID,40,pstLogon->szUserName);
          WinQueryDlgItemText(hwnd,LOG_PASSWORD,40,pstLogon->szPassword);
          WinDismissDlg(hwnd,TRUE);
          break;
        case DID_CANCEL:
          WinDismissDlg(hwnd,FALSE);
          break;
        default:
          return(WinDefDlgProc(hwnd,msg,mp1,mp2));
        }
      break;
    default:
      return(WinDefDlgProc(hwnd,msg,mp1,mp2));
    }
  return(FALSE);
  }
예제 #4
0
static BOOL GetFullFile(HWND hwnd, char szpath[CCHMAXPATH])
{
    int len;

    WinQueryDlgItemText(hwnd, DID_DIR_SELECTED, CCHMAXPATH - 1, szpath);

    len = strlen(szpath);

    if (len == CCHMAXPATH - 1) {
        return FALSE;
    }

    WinQueryDlgItemText(hwnd, DID_FILENAME_ED, CCHMAXPATH - len - 1, szpath + len);
    return TRUE;
}
예제 #5
0
/*---------------------------------------------------------------------------
                                FindWndProc
---------------------------------------------------------------------------*/
MRESULT EXPENTRY FindWndProc( HWND wnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
 MRESULT  MRes;
 HWND     entryfield;

   switch (msg) {
     case WM_INITDLG:
           PositionDialog( wnd );
           entryfield = WinWindowFromID( wnd, ID_FINDENTRY );
           WinSendMsg( entryfield, EM_SETTEXTLIMIT,
                       MPFROMSHORT( sizeof FindDat.text - 1 ), 0 );
           WinSetDlgItemText( wnd, ID_FINDENTRY, FindDat.text );
           WinSendMsg( entryfield, EM_SETSEL,
                       MPFROM2SHORT( 0, sizeof FindDat.text ), 0 );
           MRes = MRFROMSHORT( FALSE );
           break;
     case WM_CHAR:
        if (SHORT2FROMMP( mp2 ) == VK_NEWLINE) {
           WinQueryDlgItemText( wnd,
                                ID_FINDENTRY,
                                sizeof FindDat.text - 1,
                                FindDat.text );
           FindDat.sense = WinQueryButtonCheckstate( wnd, ID_FINDCHECK );
           WinDismissDlg( wnd, 0 );
        }
     default:
        MRes = WinDefDlgProc( wnd, msg, mp1, mp2 );
        break;
   }

  return MRes;
}
예제 #6
0
// *******************************************************************************
// FUNCTION:     GetEntryField
//
// FUNCTION USE: Get entry field text and convert to value
//
// DESCRIPTION:  Get the entry field text.  If units are in inches,
//               move the decimal place right to points to convert
//               to hundredths of an inch.  Convert the text to
//               a number.
//
// PARAMETERS:   HWND     dialog window handle
//               MPARAM   first message parameter
//               MPARAM   second message parameter
//
// RETURNS:      MRESULT  Reserved value of zero
//
// INTERNALS:    NONE
//
// *******************************************************************************
static void GetEntryField( HWND hwnd, ULONG cid, PLONG plValue, ULONG ulUnits )
{
   char     szText[ 34 ];
   char     *pszTemp;

// --------------------------------------------------------------------------
// Get the text from the entry field
// --------------------------------------------------------------------------
   WinQueryDlgItemText( hwnd, cid, 34, szText );

// --------------------------------------------------------------------------
// If units in inches - move the decimal point.
// --------------------------------------------------------------------------
   if (ulUnits == (ULONG)VSI_INCHES) {
      pszTemp = strchr(szText, '.' );
      if (pszTemp == NULL) {
         pszTemp = &szText[strlen(szText)];
      } /* endif */

// --------------------------------------------------------------------------
// If there is a decimal pt and something after it - move up the first
// two decimal places (and terminating NULL or other character).
// --------------------------------------------------------------------------
      if (*pszTemp && *(pszTemp+1)) {
         *pszTemp = *(pszTemp+1);
         *(pszTemp+1) = *(pszTemp+2);
         *(pszTemp+2) = *(pszTemp+3);
      } else {

// --------------------------------------------------------------------------
// otherwise just fill in a couple of zeros
// --------------------------------------------------------------------------
         *pszTemp = '0';
         *(pszTemp+1) = '0';
         *(pszTemp+2) = '\0';
      } /* endif */

// --------------------------------------------------------------------------
// If there's only one character after the decimal - fill a zero
// --------------------------------------------------------------------------
      pszTemp++;
      if (!*pszTemp) {
         *pszTemp = '0';
         *(pszTemp+1) = '\0';
      } /* endif */

// --------------------------------------------------------------------------
// make sure the string terminates after two digits
// --------------------------------------------------------------------------
      pszTemp++;
      if (*pszTemp) {
         *pszTemp = '\0';
      } /* endif */
   } /* endif */

// --------------------------------------------------------------------------
// convert to a value
// --------------------------------------------------------------------------
   *plValue = atol( szText );
}
extern MRESULT EXPENTRY ShrInstallDlgProc
    (HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  MRESULT mr = NULL;
  CHAR szDLL[CCHMAXPATH];
  CHAR szText[256];
  PSZ psz;
  HWND hwndEntryField;

  switch (msg)
  {
    case WM_INITDLG:
      hwndEntryField = WinWindowFromID(hwndDlg, ID_PATH);
      WinSetWindowText(hwndEntryField, (PSZ) mp2);
      mr = (MRESULT) WinSetFocus(HWND_DESKTOP, hwndEntryField);
      break;

    case WM_CLOSE:
      WinDismissDlg(hwndDlg, MBID_CANCEL);
      break;

    case WM_COMMAND:
      if (SHORT1FROMMP(mp1) == MBID_OK)
      {
        WinQueryDlgItemText(hwndDlg, ID_PATH, sizeof(szDLL), szDLL);
        if (strlen(szDLL) >= 2)
        {
          psz = strchr(szDLL, '\0') - 1;
          if (*psz == '\\')
            strcat(szDLL, "SHARE.DLL");
          else
            strcat(szDLL, "\\SHARE.DLL");

          strupr(szDLL);

          if (ShrInstall(szDLL))
            WinDismissDlg(hwndDlg, MBID_OK);
        }
        else
        {
          sprintf(szText, "The path must include the drive letter."
              "  For example, %s.  Please try again.", vszSysDLLPath);
          WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, szText,
              vszMessageTitle, 0, 
              MB_ENTER | MB_MOVEABLE | MB_WARNING);
        }
      }
      else if (SHORT1FROMMP(mp1) == MBID_CANCEL)
      {
        WinDismissDlg(hwndDlg, MBID_CANCEL);
      }
      break;

    default:
      mr = WinDefDlgProc(hwndDlg, msg, mp1, mp2);
      break;
  }
  
  return mr;
}
/****************************************************************\
 *
 *--------------------------------------------------------------
 *
 *  Name:        GetAlarmTime()
 *
 *  Purpose:
 *
 *
 *
 *  Usage:
 *
 *  Method:
 *          -
 *
 *          -
 *          -
 *
 *          -
 *          -
 *
 *  Returns:
 *
 *          VOID
\****************************************************************/
VOID GetAlarmTime(HWND hwnd,UCHAR *npuchHours,UCHAR *npuchMinutes)
{
   UCHAR achHourMinutes[6];
   UCHAR uchHours;

   WinQueryDlgItemText(hwnd,
                       IDC_HOURMINUTES,
                       sizeof(achHourMinutes),
                       achHourMinutes);
   uchHours = (UCHAR)atoi((const char *)achHourMinutes);

   if (bTwelveHourFormat)
   {
      if (WinSendDlgItemMsg(hwnd,
                            RB_PM,
                            BM_QUERYCHECK,
                            MPVOID,
                            MPVOID))
      {
         if(uchHours != 12)
            uchHours += 12;
      }
      else
      {
         if(uchHours == 12)
            uchHours = 0;
      }
   }
   *npuchHours = uchHours;
   *npuchMinutes = (UCHAR)atoi((const char *)&achHourMinutes[3]);
}
예제 #9
0
static MRESULT APIENTRY OK ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 ) {

 /***************************************************************************
  * Find the instance data.                                                 *
  ***************************************************************************/

  PPROFILE_PARMS Parms = PPROFILE_PARMS ( WinQueryWindowPtr ( hwnd, QWL_USER ) ) ;

 /***************************************************************************
  * Verify the entered path.                                                *
  ***************************************************************************/

  BYTE Name [256] ;
  WinQueryDlgItemText ( hwnd, Parms->id+ENTRY, sizeof(Name), Name ) ;

  BYTE FullPath [256] ;
  if ( DosQueryPathInfo ( Name, FIL_QUERYFULLNAME, FullPath, sizeof(FullPath) ) ) {
    PSZ Message = PSZ ( "ERROR: Not a valid path." ) ;
    WinSetDlgItemText ( hwnd, Parms->id+ERR, Message ) ;
    WinAlarm ( HWND_DESKTOP, WA_ERROR ) ;
    WinSetFocus ( HWND_DESKTOP, WinWindowFromID ( hwnd, Parms->id+ENTRY ) ) ;
    return ( 0 ) ;
  }

  FILESTATUS3 Status ;
  if ( DosQueryPathInfo ( FullPath, FIL_STANDARD, &Status, sizeof(Status) ) ) {
    PSZ Message = PSZ ( "ERROR: Path does not exist." ) ;
    WinSetDlgItemText ( hwnd, Parms->id+ERR, Message ) ;
    WinAlarm ( HWND_DESKTOP, WA_ERROR ) ;
    WinSetFocus ( HWND_DESKTOP, WinWindowFromID ( hwnd, Parms->id+ENTRY ) ) ;
    return ( 0 ) ;
  }

  if ( ! ( Status.attrFile & FILE_DIRECTORY ) ) {
    PSZ Message = PSZ ( "ERROR: Specified path is not a directory." ) ;
    WinSetDlgItemText ( hwnd, Parms->id+ERR, Message ) ;
    WinAlarm ( HWND_DESKTOP, WA_ERROR ) ;
    WinSetFocus ( HWND_DESKTOP, WinWindowFromID ( hwnd, Parms->id+ENTRY ) ) ;
    return ( 0 ) ;
  }

 /***************************************************************************
  * Return the full path to the caller.                                     *
  ***************************************************************************/

  strncpy ( PCHAR(Parms->Path), PCHAR(FullPath), Parms->PathSize ) ;

 /***************************************************************************
  * Dismiss the dialog with a TRUE status.                                  *
  ***************************************************************************/

  WinDismissDlg ( hwnd, TRUE ) ;

  return ( 0 ) ;
}
예제 #10
0
CHAR *
TextChanged(HWND _hwnd, ULONG _id)
{
    static char locbuf[512];

    if ((ULONG)WinSendDlgItemMsg(_hwnd, _id, EM_QUERYCHANGED , 0, 0))
    {
        WinQueryDlgItemText(_hwnd, _id, sizeof(locbuf), locbuf);
        return(locbuf);
    }

    return(0);
}
BOOL        GetProc( HWND hwnd, PRWSBLD pBld, char ** ppBuf)

{
    BOOL        fRtn = FALSE;
    ULONG       ul;
    SHORT       ndx;

do
{
    ndx = (SHORT)WinSendDlgItemMsg( hwnd, IDC_PROCTYPE, LM_QUERYSELECTION,
                                    (MP)(USHORT)LIT_FIRST, 0);
    if (ndx < 0)
        break;

    pBld->callType = ProcList[ndx].ul;

    if (pBld->callType == RWSP_CONV)
    {
        pBld->callValue = 0;
        fRtn = TRUE;
        break;
    }

    ul = WinQueryDlgItemText( hwnd, IDC_PROCNAME, RWSSTRINGSIZE, *ppBuf);

    ndx = (SHORT)WinSendDlgItemMsg( hwnd, IDC_PROCXDS, LM_QUERYSELECTION,
                                    (MP)(USHORT)LIT_FIRST, 0);
    if (ndx < 0 || ndx > XDS_STR)
        break;

    if (ndx == XDS_HEX)
        pBld->callValue = (ULONG)strtoul( *ppBuf, 0, 16);
    else
    if (ndx == XDS_DEC)
        pBld->callValue = (ULONG)strtol( *ppBuf, 0, 10);
    else
    {
        pBld->callValue = (ULONG)*ppBuf;
        *ppBuf += ul + 1;
        if (*(char*)pBld->callValue == '_')
            pBld->callValue++;
    }

    fRtn = TRUE;

} while (fFalse);

    return (fRtn);
}
예제 #12
0
MRESULT EXPENTRY EnterHiScore(HWND hdlg,ULONG messg,MPARAM mp1,MPARAM mp2)
{
switch (messg)
	{
	case WM_COMMAND: switch (COMMANDMSG(&messg)->cmd)
										{
                    case WM_INITDLG:
                                  WinSendDlgItemMsg(hdlg,IDD_HISCORE,EM_SETTEXTLIMIT,(MPARAM)9,NULL);
                                  break;
										case DID_OK:  WinQueryDlgItemText(hdlg,IDD_HISCORE,sizeof(glb_name),glb_name);
                                  WinDismissDlg (hdlg, TRUE);
																	return (0);
										}
										break;
			 }
return(WinDefDlgProc(hdlg,messg,mp1,mp2));}
예제 #13
0
static void internal_GetStaticTextSize(HWND hwnd, ULONG ulID, int *piCX, int *piCY) {
	HPS hps;
	char achTemp[512];
	POINTL aptl[TXTBOX_COUNT];

	// This calculates how much space is needed for a given static text control
	// to hold its text.
	WinQueryDlgItemText(hwnd, ulID, sizeof(achTemp), achTemp);

	hps = WinGetPS(WinWindowFromID(hwnd, ulID));
	GpiQueryTextBox(hps, strlen(achTemp), achTemp, TXTBOX_COUNT, aptl);

	*piCX = aptl[TXTBOX_TOPRIGHT].x - aptl[TXTBOX_BOTTOMLEFT].x;
	*piCY = aptl[TXTBOX_TOPRIGHT].y - aptl[TXTBOX_BOTTOMLEFT].y;

	WinReleasePS(hps);
}
예제 #14
0
MRESULT EXPENTRY fnwpUpdateStatusDlg(HWND hwnd,USHORT msg,MPARAM mp1,MPARAM mp2)
  {
  char szCount[10];

  switch (msg)
    {
    case WM_INITDLG:
      WinSendDlgItemMsg(hwnd,HWS_UPDATE,EM_SETTEXTLIMIT,MPFROMSHORT(5),(MPARAM)NULL);
      sprintf(szCount,"%u",stCFG.wUpdateDelay);
      WinSetDlgItemText(hwnd,HWS_UPDATE,szCount);
//      CenterDlgBox(hwnd);
      break;
    case WM_COMMAND:
      switch(SHORT1FROMMP(mp1))
        {
        case DID_OK:
          WinQueryDlgItemText(hwnd,HWS_UPDATE,sizeof(szCount),szCount);
          stCFG.wUpdateDelay = atol(szCount);
          WinPostMsg(hwndStatus,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          WinPostMsg(hwndStatDev,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          WinPostMsg(hwndStatAll,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          WinPostMsg(hwndStatRcvBuf,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          WinPostMsg(hwndStatXmitBuf,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          WinPostMsg(hwndStatModemIn,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          WinPostMsg(hwndStatModemOut,UM_RESETTIMER,(MPARAM)(0L),(MPARAM)0L);
          break;
        case DID_CANCEL:
          break;
        case DID_HELP:
          DisplayHelpPanel(HLPP_UPDATE_FREQ_DLG);
          return((MRESULT)FALSE);
        default:
          return WinDefDlgProc(hwnd,msg,mp1,mp2);
        }
      WinDismissDlg(hwnd,TRUE);
      break;
    default:
      return(WinDefDlgProc(hwnd,msg,mp1,mp2));
    }
  return FALSE;
  }
예제 #15
0
MRESULT EXPENTRY fnwpConfigCommDlg(HWND hwnd,USHORT msg,MPARAM mp1,MPARAM mp2)
  {
  static COMADDR *pstAddr;

  switch (msg)
    {
    case WM_INITDLG:
      pstAddr = (COMADDR *)mp2;
      WinSendDlgItemMsg(hwnd,CFG_ADDRESS,EM_SETTEXTLIMIT,MPFROMSHORT(40),(MPARAM)NULL);
      WinSetDlgItemText(hwnd,CFG_ADDRESS,pstAddr->szAddressee);
      if (pstAddr->fAddrType == BY_ADDR)
        CheckButton(hwnd,CFG_IS_ADDRESS,TRUE);
      else
        CheckButton(hwnd,CFG_IS_HOST_NAME,TRUE);
      break;
    case WM_COMMAND:
      switch(SHORT1FROMMP(mp1))
        {
        case DID_OK:
          WinQueryDlgItemText(hwnd,CFG_ADDRESS,40,pstAddr->szAddressee);
          if (Checked(hwnd,CFG_IS_ADDRESS))
            pstAddr->fAddrType = BY_ADDR;
          else
            pstAddr->fAddrType = BY_HOST;
          WinDismissDlg(hwnd,TRUE);
          break;
        case DID_CANCEL:
          WinDismissDlg(hwnd,FALSE);
          break;
        default:
          return(WinDefDlgProc(hwnd,msg,mp1,mp2));
        }
      break;
    default:
      return(WinDefDlgProc(hwnd,msg,mp1,mp2));
    }
  return(FALSE);
  }
예제 #16
0
MRESULT EXPENTRY HighScoreDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
	char PlayerName[21];

	switch( msg ){
		case WM_INITDLG:
			WinSetDlgItemShort( hwnd, IDR_SCORENUMBER, (USHORT)Score, FALSE);
			return (MRESULT)0;
		case WM_COMMAND:
			switch( SHORT1FROMMP( mp1 ) ){
				case DID_OK:
					WinQueryDlgItemText( hwnd, ID_NAME, 20, PlayerName );
					if( PlayerName[0] == '\0' )
						strcpy( PlayerName, "<didn't tell me>" );
					InfoData.InsertHigh( PlayerName, Score );
					// Score is a global variable
					WinDismissDlg( hwnd, TRUE );
					return (MRESULT)0;
				default:
					return WinDefDlgProc( hwnd, msg, mp1, mp2 );
			}
	}
	return WinDefDlgProc( hwnd, msg, mp1, mp2 );
}
예제 #17
0
VOID UnloadHandshakeDlg(HWND hwnd,DCB *pstComDCB,FIFOINF *pstFIFOinfo)
  {
  char szXchar[5];
  BOOL bXHS = FALSE;

  pstFIFOinfo->wFIFOflags &= ~FIFO_FLG_HDW_HS_MASK;
  if (pstFIFOinfo->wFIFOflags & FIFO_FLG_TYPE_MASK)
    {
    if (Checked(hwnd,HWF_HDW_CTS_HS))
      {
      pstFIFOinfo->wFIFOflags |= FIFO_FLG_HDW_CTS_HS;
      if (pstFIFOinfo->wFIFOflags & (FIFO_FLG_TYPE_16750 | FIFO_FLG_TYPE_TI16550C))
        pstFIFOinfo->wFIFOflags |= FIFO_FLG_HDW_RTS_HS;
      }
    if (Checked(hwnd,HWF_HDW_RTS_HS))
      pstFIFOinfo->wFIFOflags |= FIFO_FLG_HDW_RTS_HS;
#ifdef allow_16650_HDW_Xon_HS
    if (Checked(hwnd,HWF_HDW_RX_XON_HS))
      pstFIFOinfo->wFIFOflags |= FIFO_FLG_HDW_RX_XON_HS;
    if (Checked(hwnd,HWF_HDW_TX_XON_HS))
      pstFIFOinfo->wFIFOflags |= FIFO_FLG_HDW_TX_XON_HS;
#endif
    }
  if (Checked(hwnd,HS_TXFLOW))
    {
    bXHS = TRUE;
    pstComDCB->Flags2 |= F2_ENABLE_XMIT_XON_XOFF_FLOW;
    }
  else
    pstComDCB->Flags2 &= ~F2_ENABLE_XMIT_XON_XOFF_FLOW;

  pstComDCB->Flags2 &= ~F2_ENABLE_FULL_DUPLEX;
  if (Checked(hwnd,HS_RXFLOW))
    {
    bXHS = TRUE;
    pstComDCB->Flags2 |= F2_ENABLE_RCV_XON_XOFF_FLOW;
    if (Checked(hwnd,HS_FULLDUP))
#ifdef allow_16650_HDW_Xon_HS
      if ((pstFIFOinfo->wFIFOflags & FIFO_FLG_HDW_RX_XON_HS) == 0);
#endif
        pstComDCB->Flags2 |= F2_ENABLE_FULL_DUPLEX;
    }
  else
    pstComDCB->Flags2 &= ~F2_ENABLE_RCV_XON_XOFF_FLOW;

  if (bXHS)
    {
    WinQueryDlgItemText(hwnd,HS_XOFFCHAR,3,szXchar);
    pstComDCB->XoffChar = (BYTE)ASCIItoBin(szXchar,16);

    WinQueryDlgItemText(hwnd,HS_XONCHAR,3,szXchar);
    pstComDCB->XonChar = (BYTE)ASCIItoBin(szXchar,16);
    }

  pstComDCB->Flags2 &= ~F2_RTS_MASK;
  if (Checked(hwnd,HS_RTSENAB))
    pstComDCB->Flags2 |= F2_ENABLE_RTS;
  else
    if (Checked(hwnd,HS_RTSINHS))
      pstComDCB->Flags2 |= F2_ENABLE_RTS_INPUT_HS;
    else
      if (Checked(hwnd,HS_RTSTOG))
        pstComDCB->Flags2 |= F2_ENABLE_RTS_TOG_ON_XMIT;

  pstComDCB->Flags1 &= ~F1_DTR_MASK;
  if (Checked(hwnd,HS_DTRENAB))
    pstComDCB->Flags1 |= F1_ENABLE_DTR;
  else
    if (Checked(hwnd,HS_DTRINHS))
      pstComDCB->Flags1 |= F1_ENABLE_DTR_INPUT_HS;

  if (Checked(hwnd,HS_CTSOUT))
    pstComDCB->Flags1 |= F1_ENABLE_CTS_OUTPUT_HS;
  else
    pstComDCB->Flags1 &= ~F1_ENABLE_CTS_OUTPUT_HS;

  if (Checked(hwnd,HS_DSROUT))
    pstComDCB->Flags1 |= F1_ENABLE_DSR_OUTPUT_HS;
  else
    pstComDCB->Flags1 &= ~F1_ENABLE_DSR_OUTPUT_HS;

  if (Checked(hwnd,HS_DCDOUT))
    pstComDCB->Flags1 |= F1_ENABLE_DCD_OUTPUT_HS;
  else
    pstComDCB->Flags1 &= ~F1_ENABLE_DCD_OUTPUT_HS;

  if (Checked(hwnd,HS_DSRINSENSE))
    pstComDCB->Flags1 |= F1_ENABLE_DSR_INPUT_HS;
  else
    pstComDCB->Flags1 &= ~F1_ENABLE_DSR_INPUT_HS;

  }
예제 #18
0
//=============================================================================
// Dialog procedure
//=============================================================================
MRESULT EXPENTRY DlgMenu (HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
  {
  unsigned int i, j, k, num, slider, masklen, subnetbit, hostbit;
  unsigned int numsubnet, numhost, numtotal;
  unsigned char InField[4], OutScale[3], class[2] = "\0", OutMsg[48];
  unsigned char currnet[4], netstart[4], netstop[4], broadcast[4];
  static char ErrAddr[] = "Wrong IP address";
  static char ErrMask[] = "Wrong network mask";

  switch (msg)
    {
//-----------------------------------------------------------------------------
// Handle the initialization of the dialog
//-----------------------------------------------------------------------------
    case WM_INITDLG:
      {
//-----------------------------------------------------------------------------
// Set icon
//-----------------------------------------------------------------------------
      HPOINTER hptr = (HPOINTER)WinLoadPointer(HWND_DESKTOP, NULLHANDLE, 1);
      WinSendMsg(hwndDlg, WM_SETICON, (MPARAM) hptr, 0l);
      for ( i=0; i<4; i++ )
        WinSendDlgItemMsg(hwndDlg, EF_A1+i, EM_SETTEXTLIMIT, (MPARAM)3, 0);

      WinSendDlgItemMsg(hwndDlg,
                        SBH,
                        SLM_SETTICKSIZE,
                        MPFROM2SHORT(SMA_SETALLTICKS, 3),
                        NULL);
      for ( i=0; i<=32; i+=8 )
        {
        itoa(i, OutScale, 10);
        WinSendDlgItemMsg(hwndDlg,
                          SBH,
                          SLM_SETSCALETEXT,
                          MPFROMLONG(i),
                          MPFROMP(OutScale));
        }
      break;
      }
//-----------------------------------------------------------------------------
// Handle WM_COMMAND
//-----------------------------------------------------------------------------
    case WM_COMMAND:
      {
      switch(SHORT1FROMMP(mp1))
        {
//-----------------------------------------------------------------------------
// Close the dialog
//-----------------------------------------------------------------------------
        case PB_EXIT:
          {
          WinSendMsg(hwndDlg, WM_CLOSE, 0L, 0L);
          break;
          }
//-----------------------------------------------------------------------------
// Calculate
//-----------------------------------------------------------------------------
        case PB_CALCULATE:
          {
          WinSetDlgItemText(hwndDlg, LT_NET,  "");
          WinSetDlgItemText(hwndDlg, TXT_MB,  "");
          WinSetDlgItemText(hwndDlg, TXT_M,   "");
          WinSetDlgItemText(hwndDlg, TXT_SB,  "");
          WinSetDlgItemText(hwndDlg, TXT_HB,  "");
          WinSetDlgItemText(hwndDlg, TXT_NS,  "");
          WinSetDlgItemText(hwndDlg, TXT_NH,  "");
          WinSetDlgItemText(hwndDlg, TXT_T,   "");
          WinSetDlgItemText(hwndDlg, TXT_CN,  "");
          WinSetDlgItemText(hwndDlg, TXT_CB,  "");
          WinSetDlgItemText(hwndDlg, TXT_CHR, "");

          for ( i=0; i<4; i++ )
            {
//-----------------------------------------------------------------------------
// Разберем поля IP-адреса
//-----------------------------------------------------------------------------
            if ( (num=WinQueryDlgItemTextLength(hwndDlg, EF_A1+i)) == 0 )
              {
              SendErrMsg(hwndDlg, ErrAddr);
              return (0);
              }

            WinQueryDlgItemText(hwndDlg, EF_A1+i, sizeof(InField), InField);
            for ( j=0; j<num; j++)
              if ( isdigit(InField[j]) == 0 )
                {
                SendErrMsg(hwndDlg, ErrAddr);
                return (0);
                }

            if ( (num=atoi(InField)) > 255 )
              {
              SendErrMsg(hwndDlg, ErrAddr);
              return (0);
              }

            addr[i] = num;
            }
//-----------------------------------------------------------------------------
// Разберем адрес IP
//-----------------------------------------------------------------------------
          memset(network, 0, sizeof(network));
          if ( (addr[0] & '\x80') == '\x00' )
            {
            class[0] = 'A';
            i = 1;
            }
          else
            if ( (addr[0] & '\xc0') == '\x80' )
              {
              class[0] = 'B';
              i = 2;
              }
            else
              if ( (addr[0] & '\xe0') == '\xc0' )
                {
                class[0] = 'C';
                i = 3;
                }
              else
                {
                SendErrMsg(hwndDlg, ErrAddr);
                return (0);
                }
          masklen = 8 * i;

          for ( j=0; j<i; j++ ) network[j] = addr[j];
          sprintf(OutMsg, "Class %s network %d.%d.%d.%d", class,
                  network[0], network[1], network[2], network[3]);
          WinSetDlgItemText(hwndDlg, LT_NET, OutMsg);
//-----------------------------------------------------------------------------
// Разберем поля маски
//-----------------------------------------------------------------------------
          slider =
              (ULONG)WinSendDlgItemMsg(hwndDlg,
                                       SBH,
                                       SLM_QUERYSLIDERINFO,
                                       MPFROM2SHORT(SMA_SLIDERARMPOSITION,
                                                    SMA_INCREMENTVALUE),
                                       NULL);

          if ( (slider<masklen) || (slider==(masklen+1)) || (slider>=31) )
            {
            SendErrMsg(hwndDlg, ErrMask);
            return (0);
            }

          sprintf(OutMsg, "%d", slider);
          WinSetDlgItemText(hwndDlg, TXT_MB, OutMsg);

          memset(mask, 0, sizeof(mask));
          for ( i=0, k=0; i<4; i++)
            for ( j=0; (j<8)&&(k<slider); j++, k++ ) mask[i] |= ('\x80'>>j);

          sprintf(OutMsg, "%d.%d.%d.%d", mask[0], mask[1], mask[2], mask[3]);
          WinSetDlgItemText(hwndDlg, TXT_M, OutMsg);

          subnetbit = slider-masklen;
          sprintf(OutMsg, "%d", subnetbit);
          WinSetDlgItemText(hwndDlg, TXT_SB, OutMsg);
          hostbit = 32-masklen-subnetbit;
          sprintf(OutMsg, "%d", hostbit);
          WinSetDlgItemText(hwndDlg, TXT_HB, OutMsg);

          if ( subnetbit != 0 ) numsubnet = (1L<<subnetbit)-2;
          else numsubnet = 0;
          sprintf(OutMsg, "%d", numsubnet);
          WinSetDlgItemText(hwndDlg, TXT_NS, OutMsg);
          numhost = (1L<<hostbit)-2;
          sprintf(OutMsg, "%d", numhost);
          WinSetDlgItemText(hwndDlg, TXT_NH, OutMsg);
          if ( subnetbit != 0 ) numtotal = numsubnet*numhost;
          else numtotal = numhost;
          sprintf(OutMsg, "%d", numtotal);
          WinSetDlgItemText(hwndDlg, TXT_T, OutMsg);

          for (i=0; i<4; i++) currnet[i] = addr[i] & mask[i];
          sprintf(OutMsg, "%d.%d.%d.%d",
                  currnet[0], currnet[1], currnet[2], currnet[3]);
          WinSetDlgItemText(hwndDlg, TXT_CN, OutMsg);

          for (i=0; i<4; i++) broadcast[i] = currnet[i] | (~mask[i]);
          sprintf(OutMsg, "%d.%d.%d.%d",
                  broadcast[0], broadcast[1], broadcast[2], broadcast[3]);
          WinSetDlgItemText(hwndDlg, TXT_CB, OutMsg);

          for (i=0; i<4; i++)
            {
            netstart[i] = currnet[i];
            netstop[i] = broadcast[i];
            }
          netstart[3]++;
          netstop[3]-=1;
          sprintf(OutMsg, "%d.%d.%d.%d-%d.%d.%d.%d",
                  netstart[0], netstart[1], netstart[2], netstart[3],
                  netstop[0],  netstop[1],  netstop[2],  netstop[3]);
          WinSetDlgItemText(hwndDlg, TXT_CHR, OutMsg);

          return (0);
          }
//-----------------------------------------------------------------------------
// Расскажем о себе
//-----------------------------------------------------------------------------
        case PB_ABOUT:
          {
          WinDlgBox( HWND_DESKTOP,
                     hwndDlg,
                     WinDefDlgProc,
                     NULLHANDLE,
                     200,
                     0 );
          return (0);
          }
        }
예제 #19
0
MRESULT EXPENTRY fnSaverWindowProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  SWP swpDlg, swpParent;
  HWND hwndDlg;
  int rc;

  switch( msg )
  {
    case WM_SUBCLASS_INIT:
		case WM_CREATE: {
			RECTL rclRect;
			// Any initialization of the window and variables should come here.

			// the timer for the moving text
			ulAnimationTimerID = WinStartTimer(WinQueryAnchorBlock(hwnd), hwnd, ANIMATION_TIMER_ID, 20);

			// setup the initial coordinates for the scrolling text
			WinQueryWindowRect(hwnd, &rclRect);
			textX = rclRect.xRight;
			textY = rclRect.yTop/2;

			// Hide mouse pointer, if we're in real screen-saving mode!
			if (!bOnlyPreviewMode) WinShowPointer(HWND_DESKTOP, FALSE);
			// Initialize WMCHAR record
			internal_InitWMCHARRecord();
		break; }

		case WM_CHAR:
		if (!bOnlyPreviewMode) internal_SaveWMCHAREventToRecord(mp1, mp2);
		break;

    case WM_ASKPASSWORD:
      {
        // Get parameters
        char *pchPwdBuff = (char *) mp1;
	int iPwdBuffSize = (int) mp2;

	// Show mouse pointer, if we're screensaving.
	if (!bOnlyPreviewMode)
	  WinShowPointer(HWND_DESKTOP, TRUE);

	hwndDlg = WinLoadDlg(hwnd, hwnd,
			     fnAutoHiderDlgProc,
			     hmodOurDLLHandle,
			     DLG_PASSWORDPROTECTION,
			     NULL);
	if (!hwndDlg)
	{
	  // Could not load dialog window resources!
	  if (!bOnlyPreviewMode)
	    WinShowPointer(HWND_DESKTOP, FALSE);

	  return (MRESULT) SSMODULE_ERROR_INTERNALERROR;
	}

        // Ok, dialog window loaded!

        // Now set its texts (NLS)
        internal_SetPageFont(hwndDlg);
        internal_SetPwdProtWindowText(hwndDlg);

        // Resize the window so text will fit!
        internal_ArrangePwdProtWindowControls(hwndDlg);

	// Initialize control(s)!
	WinSendDlgItemMsg(hwndDlg, EF_PASSWORD,
			  EM_SETTEXTLIMIT,
			  (MPARAM) (iPwdBuffSize-1),
			  (MPARAM) 0);
	WinSetDlgItemText(hwndDlg, EF_PASSWORD, "");

	// Center dialog in screen
	if (WinQueryWindowPos(hwndDlg, &swpDlg))
	  if (WinQueryWindowPos(hwnd, &swpParent))
	  {
	    // Center dialog box within the screen
	    int ix, iy;
	    ix = swpParent.x + (swpParent.cx - swpDlg.cx)/2;
	    iy = swpParent.y + (swpParent.cy - swpDlg.cy)/2;
	    WinSetWindowPos(hwndDlg, HWND_TOP, ix, iy, 0, 0,
			    SWP_MOVE);
	  }
	WinSetWindowPos(hwndDlg, HWND_TOP, 0, 0, 0, 0,
			SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER);

		// Re-send WM_CHAR messages if needed
		if (bFirstKeyGoesToPwdWindow) internal_ReplayWMCHARRecord();

	// Process the dialog!
	rc = WinProcessDlg(hwndDlg);

	if (rc!=PB_OK)
	{
	  // The user pressed cancel!
          rc = SSMODULE_ERROR_USERPRESSEDCANCEL;
	} else
	{
	  // The user pressed OK!
	  // Get the entered password
	  WinQueryDlgItemText(hwndDlg, EF_PASSWORD,
			      iPwdBuffSize,
			      pchPwdBuff);
          rc = SSMODULE_NOERROR;
	}

	// Destroy window
	WinDestroyWindow(hwndDlg);

	// Hide mouse pointer again, if we're screensaving.
	if (!bOnlyPreviewMode)
	  WinShowPointer(HWND_DESKTOP, FALSE);

	return (MRESULT) rc;
      }

    case WM_SHOWWRONGPASSWORD:

      // Show mouse pointer, if we're screensaving.
      if (!bOnlyPreviewMode)
	WinShowPointer(HWND_DESKTOP, TRUE);

      hwndDlg = WinLoadDlg(hwnd, hwnd,
                           fnAutoHiderDlgProc,
                           hmodOurDLLHandle,
                           DLG_WRONGPASSWORD,
                           NULL);
      if (!hwndDlg)
      {
	// Could not load dialog window resources!

	if (!bOnlyPreviewMode)
          WinShowPointer(HWND_DESKTOP, FALSE);

        return (MRESULT) SSMODULE_ERROR_INTERNALERROR;
      }

      // Ok, dialog window loaded!

      // Now set its texts (NLS)
      internal_SetPageFont(hwndDlg);
      internal_SetWrongPwdWindowText(hwndDlg);

      // Resize the window so text will fit!
      internal_ArrangeWrongPwdWindowControls(hwndDlg);

      // Center dialog in screen
      if (WinQueryWindowPos(hwndDlg, &swpDlg))
        if (WinQueryWindowPos(hwnd, &swpParent))
        {
          // Center dialog box within the screen
          int ix, iy;
          ix = swpParent.x + (swpParent.cx - swpDlg.cx)/2;
          iy = swpParent.y + (swpParent.cy - swpDlg.cy)/2;
          WinSetWindowPos(hwndDlg, HWND_TOP, ix, iy, 0, 0,
                          SWP_MOVE);
        }
      WinSetWindowPos(hwndDlg, HWND_TOP, 0, 0, 0, 0,
                      SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER);

      // Process the dialog!
      rc = WinProcessDlg(hwndDlg);

      // Destroy window
      WinDestroyWindow(hwndDlg);

      // Hide mouse pointer again, if we're screensaving.
      if (!bOnlyPreviewMode)
        WinShowPointer(HWND_DESKTOP, FALSE);

      return (MRESULT) SSMODULE_NOERROR;

    case WM_SUBCLASS_UNINIT:
    case WM_DESTROY:
      // All kinds of cleanup (the opposite of everything done in WM_CREATE)
      // should come here.


      WinStopTimer(WinQueryAnchorBlock(hwnd), hwnd, ulAnimationTimerID);


      // Restore mouse pointer, if we're in real screen-saving mode!
      if (!bOnlyPreviewMode)
        WinShowPointer(HWND_DESKTOP, TRUE);
      break;

    case WM_ADJUSTWINDOWPOS:
      if (!bOnlyPreviewMode)
      {
	SWP *pSWP;

	// The following is required so that this window will be on
        // top of the xCenter window, evenif that is set to be always on top!

	// Real screensaving, here we should stay on top!
        // Set WS_TOPMOST flag again!
	WinSetWindowBits(hwnd, QWL_STYLE, WS_TOPMOST, WS_TOPMOST);

	pSWP = (SWP *) mp1;
	pSWP->hwndInsertBehind = HWND_TOP;
        pSWP->fl |= SWP_ZORDER;
      }
      break;
		case WM_PAINT: {
			HPS hpsBeginPaint;
			RECTL rclRect, blank, rclWindow;
			FONTMETRICS fm;
			int len;

			#ifdef DEBUG_LOGGING
				AddLog("WM_PAINT\n");
			#endif

			hpsBeginPaint = WinBeginPaint(hwnd, NULLHANDLE, &rclRect);
			WinQueryWindowRect(hwnd, &rclRect);
			WinQueryWindowRect(hwnd, &rclWindow);

			WinSetWindowFontMy(hwnd, "10.Courier");	
			GpiQueryFontMetrics(hpsBeginPaint, sizeof(fm), &fm);

			rclRect.xLeft = textX;
			rclRect.yTop  = textY;
			len = strlen(CfgDlgInit.pchText);
			rclRect.xRight = rclRect.xLeft + fm./*lAveCharWidth*/lMaxCharInc * len+5;
			rclRect.yBottom = rclRect.yTop - fm.lMaxBaselineExt;
			WinDrawText(hpsBeginPaint, len ,CfgDlgInit.pchText, &rclRect, CLR_WHITE, CLR_BLACK, DT_ERASERECT | DT_LEFT | DT_VCENTER);
			/* paint the black around the text*/
			blank.xLeft = 0; blank.yBottom = 0; blank.xRight = rclRect.xLeft; blank.yTop = rclWindow.yTop; WinFillRect(hpsBeginPaint, &blank, CLR_BLACK);
			blank.xLeft = rclRect.xLeft-2; blank.yBottom = rclRect.yTop; blank.xRight = rclWindow.xRight; blank.yTop = rclWindow.yTop; WinFillRect(hpsBeginPaint, &blank, CLR_BLACK);
			blank.xLeft = rclRect.xRight; blank.yBottom = 0; blank.xRight = rclWindow.xRight; blank.yTop = rclRect.yTop; WinFillRect(hpsBeginPaint, &blank, CLR_BLACK);
			blank.xLeft = rclRect.xLeft-2; blank.yBottom = 0; blank.xRight = rclRect.xRight+2; blank.yTop = rclRect.yBottom; WinFillRect(hpsBeginPaint, &blank, CLR_BLACK);
			if (rclRect.xRight <= -10) {
				WinQueryWindowRect(hwnd, &rclRect);
				textX = rclRect.xRight;
				textY = rclRect.yTop/2;
			}
			WinEndPaint(hpsBeginPaint);

			#ifdef DEBUG_LOGGING
				AddLog("WM_PAINT done\n");
			#endif
			return (MRESULT) FALSE;
		}

     case WM_TIMER:
      if (((SHORT)mp1)==ANIMATION_TIMER_ID)
      {
	// Timer, so make new image position
	textX -= 2;
	WinInvalidateRect(hwnd, NULL, FALSE);
      }
      break;

    default:
      break;
  }

  return WinDefWindowProc( hwnd, msg, mp1, mp2 );
}
예제 #20
0
MRESULT EXPENTRY SETTINGSDlgProc(HWND hwndDlg, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  HWND hwndFrame = hwndDlg;
 /* ##START Form.37 Top of window procedure */
 /* Code sections - Top of window procedure */
 /* ##END Top of window procedure */
   switch (msg) {
   /* Form event Opened WM_INITDLG */
   case WM_INITDLG :
     HandleMessage(hwndFrame, hwndDlg, msg, mp1, mp2);
      {
      /* ##START Form.1  */
      /* Form events - Opened */


      {
      ULONG dtHeight, dtWidth, lHeight, lWidth;
      SWP swp;
      dtHeight = WinQuerySysValue(HWND_DESKTOP,SV_CYSCREEN);
      dtWidth = WinQuerySysValue(HWND_DESKTOP,SV_CXSCREEN);
      WinQueryWindowPos(hwndDlg, (PSWP) &swp);
      lWidth = (dtWidth/2) - (swp.cx/2); 
      lHeight = (dtHeight/2) - (swp.cy/2); 
      WinSetWindowPos(hwndDlg, HWND_TOP, lWidth, lHeight, 0, 0, SWP_MOVE | SWP_SHOW | SWP_ACTIVATE);
      }

      queryNCSet();

      if( pgmData[38] == 1 )
         WinCheckButton(hwndDlg, 1024, 1);

      WinSetDlgItemText(hwndDlg, 1004, mailServer);
      WinSetDlgItemText(hwndDlg, 1005, userName);
      WinSetDlgItemText(hwndDlg, 1006, passWord);
      WinSetDlgItemText(hwndDlg, 1012, mailServer2);
      WinSetDlgItemText(hwndDlg, 1013, userName2);
      WinSetDlgItemText(hwndDlg, 1016, passWord2);
      WinSetDlgItemText(hwndDlg, 1007, nickName);
      WinSetDlgItemText(hwndDlg, 1017, rtema);
      WinSetDlgItemText(hwndDlg, 1018, rtname);
      /* ##END  */
      }
      break;

   /* Form event Closed WM_CLOSE */
   case WM_CLOSE :
      /* ##START Form.2  */
      /* ##END  */
     HandleMessage(hwndFrame, hwndDlg, msg, mp1, mp2);
      break;

   case WM_COMMAND :
      switch (SHORT1FROMMP(mp1)) {
      /* Button 1019 Clicked/Selected */
      case 1019:
         {
         /* ##START 1019.0  */
         /* Event Clicked/selected - ~OK  1019 */


         WinQueryDlgItemText(hwndDlg, 1004, CCHMAXPATH, mailServer);
         WinQueryDlgItemText(hwndDlg, 1005, CCHMAXPATH, userName);
         WinQueryDlgItemText(hwndDlg, 1006, CCHMAXPATH, passWord);
         WinQueryDlgItemText(hwndDlg, 1012, CCHMAXPATH, mailServer2);
         WinQueryDlgItemText(hwndDlg, 1013, CCHMAXPATH, userName2);
         WinQueryDlgItemText(hwndDlg, 1016, CCHMAXPATH, passWord2);
         WinQueryDlgItemText(hwndDlg, 1007, CCHMAXPATH, nickName);
         WinQueryDlgItemText(hwndDlg, 1017, CCHMAXPATH, rtema);
         WinQueryDlgItemText(hwndDlg, 1018, CCHMAXPATH, rtname);
         if( WinQueryButtonCheckstate(hwndDlg,1024) )
            pgmData[38] = 1;
         else   
            pgmData[38] = 0;
         // bugem(hwndDlg);
         saveNCSet();
         makeTBar();
         WinPostMsg(hwndDlg, WM_CLOSE, 0, 0);
         /* ##END  */
         }
         break;
      /* Button 1020 Clicked/Selected */
      case 1020:
         {
         /* ##START 1020.0  */
         /* Event Clicked/selected - ~Cancel  1020 */

         WinPostMsg(hwndDlg, WM_CLOSE, 0, 0);
         /* ##END  */
         }
         break;
      } /* end switch */
      break;

 /* ##START Form.38 User defined messages */
 /* Event Code sections, User defined messages */
 /* ##END User defined messages */
   default :
     HandleMessage(hwndFrame, hwndDlg, msg, mp1, mp2);
     return WinDefDlgProc(hwndDlg,msg,mp1,mp2);
   } /* end switch for main msg dispatch */
   return (MRESULT)FALSE;
} /* end dialog procedure */
예제 #21
0
// Callback function - handles messages sent to the dialog box
MRESULT EXPENTRY vncConnDialog::vncConnDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
    // This is a static method, so we don't know which instantiation we're
    // dealing with. But we can get a pseudo-this from the parameter to
    // WM_INITDIALOG, which we therafter store with the window and retrieve
    // as follows:
    vncConnDialog *_this = (vncConnDialog *)WinQueryWindowULong(hwnd, QWL_USER);

    switch (msg) {

    // Dialog has just been created
    case WM_INITDLG:
    {
        // Save the lParam into our user data so that subsequent calls have
        // access to the parent C++ object
        WinSetWindowULong(hwnd, QWL_USER, (ULONG)mp2);
        vncConnDialog *_this = (vncConnDialog *)mp2;

        // Make the text entry box active
        WinSetFocus(HWND_DESKTOP, WinWindowFromID(hwnd, IDC_HOSTNAME));

        WinSendDlgItemMsg( hwnd, IDC_HOSTNAME, EM_SETTEXTLIMIT, MPFROMSHORT( 256 ) , MPVOID );
        // Return success!
        return (MRESULT)FALSE;
    }

    // Dialog has just received a command
    case WM_COMMAND:
        switch (SHORT1FROMMP(mp1))
        {

        // User clicked OK or pressed return
        case DID_OK:
        {
            char viewer[256];
            char hostname[256];
            VCard display_or_port;

            // Get the viewer to connect to
            WinQueryDlgItemText(hwnd, IDC_HOSTNAME, 256, (PSZ)viewer);

            // Process the supplied viewer address
            int result = sscanf(viewer, "%255[^:]:%u", hostname, &display_or_port);
            if (result == 1) {
                display_or_port = 0;
                result = 2;
            }
            if (result == 2) {
                // Correct a display number to a port number if required
                if (display_or_port < 100) {
                    display_or_port += INCOMING_PORT_OFFSET;
                }

                addClntThrdCD *t = new addClntThrdCD( _this->m_server , hostname , display_or_port );
                t->start();
                WinDismissDlg( hwnd , 0 );
            } else {
                // We couldn't process the machine specification
                WinMessageBox( HWND_DESKTOP , HWND_DESKTOP ,
                               (PSZ)"Unable to process specified hostname and display/port",
                               (PSZ)"Outgoing Connection", 10001, MB_OK | MB_ICONEXCLAMATION);
            }
        }
        return (MRESULT)FALSE;

        // Cancel the dialog
        case DID_CANCEL:
            WinDismissDlg( hwnd , 0 );
            return (MRESULT)FALSE;
        };
        break;
    }
    return WinDefDlgProc( hwnd , msg , mp1 , mp2 );
}
예제 #22
0
void DumpDlgInfo( HWND hwndDlg )
{
    char  szToUl[ 50 ];
    int   i;
    SHORT sItemIndex;
    HWND  hwndLB;

    WinQueryDlgItemText( hwndDlg, CB_OPERATION, sizeof szToUl, szToUl );
    for( i = 0; i < cOperations; i++ )
        if( strcmp( szToUl, dcOperation[ i ].szItem ) == 0 )
        {
            dlgInfo.usOperation = dcOperation[ i ].iItem;
            break;
        }
    if( i == cOperations )
        dlgInfo.usOperation = atol( szToUl );

    hwndLB = WinWindowFromID( hwndDlg, LB_CONTROL );
    dlgInfo.fsControl = 0;
    sItemIndex = LIT_FIRST;
    do
    {
        sItemIndex = SHORT1FROMMR( WinSendMsg( hwndLB, LM_QUERYSELECTION,
                                            MPFROMSHORT( sItemIndex ), NULL ) );
        if( sItemIndex != LIT_NONE )
            dlgInfo.fsControl |= dcControl[ sItemIndex ].iItem;
    } while( sItemIndex != LIT_NONE );


    hwndLB = WinWindowFromID( hwndDlg, LB_SUPPORTEDOPS );
    dlgInfo.fsSupportedOps = 0;
    sItemIndex = LIT_FIRST;
    do
    {
        sItemIndex = SHORT1FROMMR( WinSendMsg( hwndLB, LM_QUERYSELECTION,
                                            MPFROMSHORT( sItemIndex ), NULL ) );
        if( sItemIndex != LIT_NONE )
            dlgInfo.fsSupportedOps |= dcSupportedOp[ sItemIndex ].iItem;
    } while( sItemIndex != LIT_NONE );

    WinQueryDlgItemText( hwndDlg, EF_ITEMID, sizeof szToUl, szToUl );
    dlgInfo.ulItemID = atol( szToUl );

    WinQueryDlgItemText( hwndDlg, CB_TYPE, sizeof dlgInfo.szType,
                         dlgInfo.szType );
    for( i = 0; i < cTypes; i++ )
    {
       if( !stricmp( ntsType[ i ].szName, dlgInfo.szType ) )
          strcpy( dlgInfo.szType, ntsType[ i ].szString );
    }

    WinQueryDlgItemText( hwndDlg, EF_CNR_NAME, sizeof dlgInfo.szContainerName,
                         dlgInfo.szContainerName );
    WinQueryDlgItemText( hwndDlg, EF_SOURCE_NAME, sizeof dlgInfo.szSourceName,
                         dlgInfo.szSourceName );
    WinQueryDlgItemText( hwndDlg, EF_TARGET_NAME, sizeof dlgInfo.szTargetName,
                         dlgInfo.szTargetName );

    dlgInfo.fUseDlgItemID = WinQueryButtonCheckstate( hwndDlg,CHK_OVERRIDE_ID );
    dlgInfo.fUseDlgDragNames =
        WinQueryButtonCheckstate( hwndDlg, CHK_OVERRIDE_HSTRS );
}
예제 #23
0
static MRESULT EXPENTRY AreaGenSettProc(HWND parent, ULONG message, MPARAM mp1, MPARAM mp2)
{
   HWND hwndList;
   extern USERDATAOPT userdaten;
   extern AREALIST arealiste;
   extern TEMPLATELIST templatelist;
   SHORT sItem=0, sSelect=0;
   static AREADEFLIST *pArea=NULL;
   char pchTemp[LEN_PATHNAME+1];
   static HWND hwndSettingsFrame;
   PMSGTEMPLATE pTemplate;
   AREADEFLIST *pAreaTemp;

   switch(message)
   {
      case WM_INITDLG:
         pArea=((PAREAPAR)mp2)->pAreaDef;

         if (!((PAREAPAR)mp2)->bMultiple)
         {
            SendMsg(hwndSettingsFrame=WinQueryWindow(parent, QW_PARENT),
                       APM_SETTITLE, pArea->areadata.areatag, NULL);
            WinSendDlgItemMsg(parent,IDD_AS_GENERAL+3,
                              EM_SETTEXTLIMIT,
                              MPFROMSHORT(LEN_AREATAG),
                              (MPARAM) NULL);

            WinSendDlgItemMsg(parent,IDD_AS_GENERAL+5,
                              EM_SETTEXTLIMIT,
                              MPFROMSHORT(LEN_AREADESC),
                              (MPARAM) NULL);
         }
         else
         {
            WinShowWindow(WinWindowFromID(parent, IDD_AS_GENERAL+2), FALSE);
            WinShowWindow(WinWindowFromID(parent, IDD_AS_GENERAL+3), FALSE);
            WinShowWindow(WinWindowFromID(parent, IDD_AS_GENERAL+4), FALSE);
            WinShowWindow(WinWindowFromID(parent, IDD_AS_GENERAL+5), FALSE);
         }

         /* Adressen eintragen */
         hwndList=WinWindowFromID(parent, IDD_AS_GENERAL+9);
         SendMsg(hwndList, LM_DELETEALL, (MPARAM)0, (MPARAM)0);
         sItem=0;
         sSelect = LIT_NONE;
         while(sItem<MAX_ADDRESSES && userdaten.address[sItem][0])
         {
            SendMsg(hwndList, LM_INSERTITEM,
                       MPFROMSHORT(LIT_END),
                       (MPARAM) userdaten.address[sItem]);
            if (pArea && !strcmp(pArea->areadata.address, userdaten.address[sItem]))
               sSelect = sItem;
            sItem++;
         }
         SendMsg(hwndList, LM_SELECTITEM, MPFROMSHORT(sSelect), (MPARAM) TRUE);

         /* Namen eintragen */
         hwndList=WinWindowFromID(parent, IDD_AS_GENERAL+12);
         SendMsg(hwndList, LM_DELETEALL, (MPARAM)0, (MPARAM)0);
         sItem=0;
         sSelect = LIT_NONE;
         while(sItem<MAX_USERNAMES && userdaten.username[sItem][0])
         {
            SendMsg(hwndList, LM_INSERTITEM,
                       MPFROMSHORT(LIT_END),
                       (MPARAM) userdaten.username[sItem]);
            if (pArea && !strcmp(pArea->areadata.username, userdaten.username[sItem]))
               sSelect = sItem;
            sItem++;
         }
         SendMsg(hwndList, LM_SELECTITEM, MPFROMSHORT(sSelect), (MPARAM) TRUE);

         if (pArea)
         {
            WinSetDlgItemText(parent, IDD_AS_GENERAL+3,
                              pArea->areadata.areatag);
            WinSetDlgItemText(parent, IDD_AS_GENERAL+5,
                              pArea->areadata.areadesc);

            if (pArea->areadata.ulAreaOpt & AREAOPT_FROMCFG)
               WinSendDlgItemMsg(parent, IDD_AS_GENERAL+3, EM_SETREADONLY,
                                 (MPARAM)TRUE, NULL);
         }

         /* Template-Namen eintragen */
         pTemplate = templatelist.pTemplates;
         while (pTemplate)
         {
            sItem = (SHORT) WinSendDlgItemMsg(parent, IDD_AS_GENERAL+14, LM_INSERTITEM,
                                              MPFROMSHORT(LIT_SORTASCENDING),
                                              pTemplate->TName);
            WinSendDlgItemMsg(parent, IDD_AS_GENERAL+14, LM_SETITEMHANDLE,
                              MPFROMSHORT(sItem),
                              MPFROMLONG(pTemplate->ulID));
            if (pArea && pTemplate->ulID == pArea->areadata.ulTemplateID)
               WinSendDlgItemMsg(parent, IDD_AS_GENERAL+14, LM_SELECTITEM,
                                 MPFROMSHORT(sItem), MPFROMSHORT(TRUE));

            pTemplate = pTemplate->next;
         }
         break;

      case WM_CLOSE:
      case WM_DESTROY:
         if (!WinQueryWindowULong(parent, QWL_USER))
         {
            WinQueryDlgItemText(parent, IDD_AS_GENERAL+3, LEN_AREATAG+1,
                                pchTemp);
            if (strcmp(pArea->areadata.areatag, pchTemp))
            {
               strcpy(pArea->areadata.areatag, pchTemp);
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }
            WinQueryDlgItemText(parent, IDD_AS_GENERAL+5, LEN_AREADESC+1,
                                pchTemp);
            if (strcmp(pArea->areadata.areadesc, pchTemp))
            {
               strcpy(pArea->areadata.areadesc, pchTemp);
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }
            WinQueryDlgItemText(parent, IDD_AS_GENERAL+9, LEN_5DADDRESS+1,
                                pchTemp);
            if (strcmp(pArea->areadata.address, pchTemp))
            {
               strcpy(pArea->areadata.address, pchTemp);
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }
            WinQueryDlgItemText(parent, IDD_AS_GENERAL+12, LEN_USERNAME+1,
                                pchTemp);
            if (strcmp(pArea->areadata.username, pchTemp))
            {
               strcpy(pArea->areadata.username, pchTemp);
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }
            sItem = (SHORT)WinSendDlgItemMsg(parent, IDD_AS_GENERAL+14, LM_QUERYSELECTION,
                                               MPFROMSHORT(LIT_FIRST), NULL);
            if (sItem >= 0)
            {
               ULONG ulID;

               ulID = (ULONG) WinSendDlgItemMsg(parent, IDD_AS_GENERAL+14, LM_QUERYITEMHANDLE,
                                                MPFROMSHORT(sItem), NULL);
               if (ulID != pArea->areadata.ulTemplateID)
               {
                  pArea->areadata.ulTemplateID = ulID;
                  arealiste.bDirty = TRUE;
                  pArea->dirty=TRUE;
               }
            }
         }
         break;

      case WM_COMMAND:
         return (MRESULT) FALSE;

      case WM_CONTROL:
         if (SHORT1FROMMP(mp1)==IDD_AS_GENERAL+3)
            if (SHORT2FROMMP(mp1)==EN_KILLFOCUS)
            {
               char pchTempTag[LEN_AREATAG+1];

               WinQueryDlgItemText(parent, IDD_AS_GENERAL+3, LEN_AREATAG+1, pchTempTag);
               SendMsg(hwndSettingsFrame,
                          APM_SETTITLE, pchTempTag, NULL);
            }
         if (SHORT1FROMMP(mp1) == IDD_AS_GENERAL+15)
            if (SHORT2FROMMP(mp1) == BN_CLICKED ||
                SHORT2FROMMP(mp1) == BN_DBLCLICKED)
            {
               if (WinQueryButtonCheckstate(parent, IDD_AS_GENERAL+15))
                  WinEnableControl(parent, IDD_AS_GENERAL+7, FALSE);
               else
                  WinEnableControl(parent, IDD_AS_GENERAL+7, TRUE);
            }
         break;

      case APM_REQCLOSE:
         WinQueryDlgItemText(parent, IDD_AS_GENERAL+3, LEN_AREATAG+1,
                             pchTemp);
         if (pchTemp[0] == 0)
         {
            /* Fehler, kein Area-Tag */
            if (MessageBox(parent, IDST_MSG_NOAREATAG, 0,
                           IDD_NOAREATAG, MB_RETRYCANCEL | MB_ERROR) == MBID_CANCEL)
                return (MRESULT) 2;
            else
                return (MRESULT) 1;
         }
         else
         {
            pAreaTemp = AM_FindArea(&arealiste, pchTemp);
            if (pAreaTemp && pAreaTemp != pArea)
            {
               /* Fehler, schon vorhanden */
               if (MessageBox(parent, IDST_MSG_ALREADYHAVEAREA, 0,
                              IDD_ALREADYHAVEAREA, MB_RETRYCANCEL | MB_ERROR) == MBID_CANCEL)
                   return (MRESULT) 2;
               else
                   return (MRESULT) 1;
            }
         }
         return (MRESULT) 0;

      case APM_CANCEL:
         WinSetWindowULong(parent, QWL_USER, 1);
         break;

      default:
         break;
   }
   return WinDefDlgProc(parent,message,mp1,mp2);
}
예제 #24
0
MRESULT EXPENTRY
SETTINGS :: Page1Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
    static PSETTINGS   pset = NULL;

    switch (msg)
    {
    case WM_INITDLG: {
#ifdef _DOLOGDEBUG_
        LogDebug( "Page1Procedure: start WM_INITDLG" );
#endif
        ULONG ul;
        pset = PSETTINGS (mp2);
        for( int i = 0; i < BMF_INVALID; i++ ) {
            if( pset->ifi[ i ].available ) {
                ul = WinInsertLboxItem( WinWindowFromID( hwnd, WID_LB_FILEFORMAT ),
                                        LIT_END, pset->ifi[ i ].label );
                WinSendMsg( WinWindowFromID( hwnd, WID_LB_FILEFORMAT ),
                            LM_SETITEMHANDLE, MPFROMLONG(ul), MPFROMP( i ) );
            }
        }
#ifdef _DOLOGDEBUG_
        LogDebug( "Page1Procedure: end WM_INITDLG" );
#endif
        return MRESULT (FALSE);
    }

    case WM_COMMAND:
        if( SHORT1FROMMP( mp1 ) == DID_CANCEL )
            WinPostMsg( g_hwndSettingsDialog, msg, mp1, mp2 );
        return MRESULT( FALSE );

    case UM_SETTINGS2DIALOG: {
#ifdef _DOLOGDEBUG_
        LogDebug( "Page1Procedure: start UM_SETTINGS2DIALOG" );
#endif
        // set num save dir name
        WinSendDlgItemMsg (hwnd, WID_E_NUMSAVEDIR, EM_SETTEXTLIMIT,
                           MPARAM (_MAX_PATH-1), (MPARAM)0);
        WinSetDlgItemText (hwnd, WID_E_NUMSAVEDIR,
                           pset->QueryNumSaveDir ());
        WinSendDlgItemMsg (hwnd, WID_E_NUMSAVEDIR, EM_SETSEL,
                           MPFROM2SHORT (0, _MAX_PATH), (MPARAM)0);

        // set force file name
        WinSendDlgItemMsg (hwnd, WID_E_FORCESAVEFILE, EM_SETTEXTLIMIT,
                           MPARAM (_MAX_PATH-1), (MPARAM)0);
        WinSetDlgItemText (hwnd, WID_E_FORCESAVEFILE,
                           pset->QueryForceSaveFile ());
        WinSendDlgItemMsg (hwnd, WID_E_FORCESAVEFILE, EM_SETSEL,
                           MPFROM2SHORT (0, _MAX_PATH), (MPARAM)0);

/*        switch (pset->QueryFileFormat ())
        {
        case BMF_20:
            WinSendDlgItemMsg (hwnd, WID_RB_BMF20, BM_CLICK,
                               MPFROMSHORT(TRUE), 0);
            break;
        case BMF_12:
            WinSendDlgItemMsg (hwnd, WID_RB_BMF12, BM_CLICK,
                               MPFROMSHORT(TRUE), 0);
            break;
        default:
            WinSendDlgItemMsg (hwnd, WID_RB_BMF16, BM_CLICK,
                               MPFROMSHORT(TRUE), 0);
            break;
        } */

        // Select the appropriate entry in the fileformat-listbox.
        HWND     hwndLB = WinWindowFromID( hwnd, WID_LB_FILEFORMAT );
        ULONG    c, i;

        c = WinQueryLboxCount( hwndLB );
        for( i = 0; i < c; i++ )
        {
            ULONG type = ULONG( WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT,
                                                   LM_QUERYITEMHANDLE,
                                                   MPFROMLONG(i), NULL ) );
            if( type == ULONG( pset->QueryFileFormat() ) )
                break;
        }
        if( i < c )
            WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT, LM_SELECTITEM,
                               MPFROMSHORT(i), MPFROMSHORT(TRUE) );
        else
            WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT, LM_SELECTITEM,
                               MPFROMSHORT(0), MPFROMSHORT(TRUE) );

        // Select appropriate radiobutton for save style.
        switch (pset->QueryFileSaveStyle ())
        {
        case FSS_NUMFILES:
            WinSendDlgItemMsg (hwnd, WID_RB_FSSNUMFILES, BM_CLICK,
                               MPFROMSHORT(TRUE), 0);
            AdjustSaveTypeButtons (FALSE);
            break;

        case FSS_FORCEFILE:
            WinSendDlgItemMsg (hwnd, WID_RB_FSSFORCEFILE, BM_CLICK,
                               MPFROMSHORT(TRUE), 0);
            AdjustSaveTypeButtons (TRUE);
            break;

        default:
            WinSendDlgItemMsg (hwnd, WID_RB_FSSPROMPT, BM_CLICK,
                               MPFROMSHORT(TRUE), 0);
            AdjustSaveTypeButtons (FALSE);
            break;
        }
#ifdef _DOLOGDEBUG_
        LogDebug( "Page1Procedure: end UM_SETTINGS2DIALOG" );
#endif
        return MRESULT (FALSE);
    }

    case UM_ADJUST:
        {
#ifdef _DOLOGDEBUG_
            LogDebug( "Page1Procedure: start UM_ADJUST" );
#endif
            // get file save style
            if (WinSendMsg (WinWindowFromID (hwnd, WID_RB_FSSNUMFILES),
                            BM_QUERYCHECK, 0,0))
                pset->SetFileSaveStyle (FSS_NUMFILES);
            else if (WinSendMsg (WinWindowFromID (hwnd, WID_RB_FSSFORCEFILE),
                                 BM_QUERYCHECK, 0,0))
                pset->SetFileSaveStyle (FSS_FORCEFILE);
            else
                pset->SetFileSaveStyle (FSS_PROMPT);
#ifdef _DOLOGDEBUG_
            LogDebug( "Page1Procedure: checkpoint 1" );
#endif

            // Get file format.
            ULONG ul = USHORT( WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT,
                                                  LM_QUERYSELECTION,
                                                  MPFROMLONG( LIT_FIRST ),
                                                  0L ) );
            ul = ULONG( WinSendDlgItemMsg( hwnd, WID_LB_FILEFORMAT,
                                           LM_QUERYITEMHANDLE,
                                           MPFROMLONG( ul ), NULL ) );
            pset->SetFileFormat( SHORT( ul ) );
/*            if (WinSendMsg (WinWindowFromID (hwnd, WID_RB_BMF12),
                            BM_QUERYCHECK, 0,0))
                pset->SetFileFormat (BMF_12);
            else if (WinSendMsg (WinWindowFromID (hwnd, WID_RB_BMF20),
                                 BM_QUERYCHECK, 0,0))
                pset->SetFileFormat (BMF_20);
            else
                pset->SetFileFormat (BMF_16); */
#ifdef _DOLOGDEBUG_
            LogDebug( "Page1Procedure: checkpoint 2" );
#endif

            // num save dir file name
            CHAR   psz[_MAX_PATH];
            WinQueryDlgItemText (hwnd, WID_E_NUMSAVEDIR, _MAX_PATH, psz);
            pset->SetNumSaveDir (psz);

            // force file name
            WinQueryDlgItemText (hwnd, WID_E_FORCESAVEFILE, _MAX_PATH, psz);
            pset->SetForceSaveFile (psz);

            AdjustSaveTypeButtons
                (BOOL (pset->QueryFileSaveStyle () == FSS_FORCEFILE));
#ifdef _DOLOGDEBUG_
            LogDebug( "Page1Procedure: end UM_ADJUST" );
#endif
        }
        break;

    case WM_CONTROL:
        switch (SHORT1FROMMP (mp1))
        {
        case WID_RB_FSSFORCEFILE:
            AdjustSaveTypeButtons (TRUE);
            break;

        case WID_RB_FSSPROMPT:
        case WID_RB_FSSNUMFILES:
            AdjustSaveTypeButtons (FALSE);
            break;
        }
        return MRESULT (FALSE);
    }

    return WinDefDlgProc (hwnd, msg, mp1, mp2);
}
예제 #25
0
MRESULT EXPENTRY fnCacheNotebookPage( HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2 )
{
  char sTemp[256];
  int iTemp;
  int iCacheSize;

  switch (msg)
  {
    case WM_UPDATEVALUES:
    case WM_INITDLG:
      // Initialization of this page

      // Calculate full cache size
      iCacheSize = WaWEConfiguration.uiCachePageSize * WaWEConfiguration.uiNumOfCachePages;

      // Fill the entry fields

      // Set Cache page size
      WinSetDlgItemText(hwnd, EF_SIZEOFCACHEPAGE, (MPARAM) itoa(WaWEConfiguration.uiCachePageSize, sTemp, 10));
      // Set num of cache pages
      WinSetDlgItemText(hwnd, EF_MAXNUMOFCACHEPAGES, (MPARAM) itoa(WaWEConfiguration.uiNumOfCachePages, sTemp, 10));
      // Set full cache size
      WinSetDlgItemText(hwnd, EF_MAXIMUMCACHESIZEFORCHSET, (MPARAM) itoa(iCacheSize, sTemp, 10));

      // Checkbox of use cache
      WinSendMsg(WinWindowFromID(hwnd, CB_USEREADCACHEFORCHANNELSETS), BM_SETCHECK,
                 (MPARAM) (WaWEConfiguration.bUseCache),
                 (MPARAM) (0));

      break;
    case WM_CONTROL:  // ------------------- WM_CONTROL messages ---------------------------
      switch SHORT1FROMMP(mp1) {
	case EF_SIZEOFCACHEPAGE:           // - - - - - - - Message from SizeOfCachePage entry field - - - - - - -
	  switch (SHORT2FROMMP(mp1)) {
	    case EN_SETFOCUS:                 // Entered into entry field
	      // Save old text from here:
	      WinQueryDlgItemText(hwnd, SHORT1FROMMP(mp1),
				  1024, achTextUndoBuf);
	      break;
	    case EN_KILLFOCUS:                // Leaving entry field
	      {
		// Check the text there, and restore old one, if it's invalid!
		WinQueryDlgItemText(hwnd, SHORT1FROMMP(mp1),
				    256, sTemp);
		iTemp = atoi(sTemp);
		if ((iTemp>=MIN_ACCEPTABLE_CACHEPAGESIZE) && (iTemp<=MAX_ACCEPTABLE_CACHEPAGESIZE))
		{
		  WaWEConfiguration.uiCachePageSize = iTemp;
                  WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), (MPARAM) itoa(iTemp, sTemp, 10));
                  iCacheSize = WaWEConfiguration.uiCachePageSize * WaWEConfiguration.uiNumOfCachePages;
                  WinSetDlgItemText(hwnd, EF_MAXIMUMCACHESIZEFORCHSET, (MPARAM) itoa(iCacheSize, sTemp, 10));
		}
                else
		  WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), achTextUndoBuf);

		break;
	      }
	    default:
	      break;
          }
          return (MPARAM) TRUE;
	  break; // End of EF_* processing
	case EF_MAXNUMOFCACHEPAGES:           // - - - - - - - Message from NumOfCachePages entry field - - - - - - -
	  switch (SHORT2FROMMP(mp1)) {
	    case EN_SETFOCUS:                 // Entered into entry field
	      // Save old text from here:
	      WinQueryDlgItemText(hwnd, SHORT1FROMMP(mp1),
				  1024, achTextUndoBuf);
	      break;
	    case EN_KILLFOCUS:                // Leaving entry field
	      {
		// Check the text there, and restore old one, if it's invalid!
		WinQueryDlgItemText(hwnd, SHORT1FROMMP(mp1),
				    256, sTemp);
		iTemp = atoi(sTemp);
		if ((iTemp>=MIN_ACCEPTABLE_NUMOFCACHEPAGES) && (iTemp<=MAX_ACCEPTABLE_NUMOFCACHEPAGES))
		{
		  WaWEConfiguration.uiNumOfCachePages = iTemp;
                  WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), (MPARAM) itoa(iTemp, sTemp, 10));
                  iCacheSize = WaWEConfiguration.uiCachePageSize * WaWEConfiguration.uiNumOfCachePages;
                  WinSetDlgItemText(hwnd, EF_MAXIMUMCACHESIZEFORCHSET, (MPARAM) itoa(iCacheSize, sTemp, 10));
		}
                else
		  WinSetDlgItemText(hwnd, SHORT1FROMMP(mp1), achTextUndoBuf);

		break;
	      }
	    default:
	      break;
          }
          return (MPARAM) TRUE;
	  break; // End of EF_* processing
          // -------------------------------- Checkboxes --------------------
	case CB_USEREADCACHEFORCHANNELSETS:
	  if (SHORT2FROMMP(mp1) == BN_CLICKED)
	  {
            WaWEConfiguration.bUseCache =
              WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
          }
          break;
        default:
	  break;
      } // end of switch inside WM_CONTROL
      break;
    default:
      break;
  } // end of switch of msg

  // Call the default procedure if it has not been processed yet!
  return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
예제 #26
0
MRESULT EXPENTRY MaskDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) {
   static PMASKSEL pmask;
   static BOOL flag = FALSE;   // TRUE se Š stato aggiunto o tolto un elemento
   static int idx;             // posizione item selezionato o di inserzione

   switch (msg) {
      case WM_INITDLG: {
         CHAR buf[FACESIZE];
         PSZ pszCur;
         int len;
         pmask = (PMASKSEL)PVOIDFROMMP(mp2);      // recupera indirizzo dati
         // imposta il font della barra del titolo:
         PrfQueryProfileString(HINI_USERPROFILE, "PM_SystemFonts",
                               "WindowTitles", "9.WarpSans", buf, FACESIZE);
         WinSetPresParam(WinWindowFromID(hwnd, FID_TITLEBAR), PP_FONTNAMESIZE,
                         sstrlen(buf) + 1, (PVOID)(buf));
         WinSetWindowPos(hwnd, HWND_BOTTOM, pmask->pos.x, pmask->pos.y, 0, 0,
                         SWP_MOVE | SWP_SHOW);    // visualizza la finestra
         pszCur = pmask->pszExt;
         DlgEFSetTxtLimit(hwnd, COMBO_MASK, 63);
         // riempie la listbox
         while (len = sstrlen(pszCur)) {
            DlgLboxInsertItem(hwnd, COMBO_MASK, LIT_SORTASCENDING, pszCur);
            pszCur += len + 1;
         } /* endwhile */
         } // end case WM_INITDLG:
         break;
      case WM_CONTROL:
         switch (SHORT2FROMMP(mp1)) {
            case CBN_EFCHANGE: {          // cambiamento testo
               BOOL enable;
               // pulsante OK abilitato se c'e' testo nell' entrifield
               enable = WinQueryDlgItemTextLength(hwnd, COMBO_MASK);
               WinEnableControl(hwnd, MASK_OK, enable);
               // pulsante ADD abilitato se c'Š testo non gi… presente
               WinQueryDlgItemText(hwnd, COMBO_MASK, 64, pmask->achSel);
               idx = isInListBox(hwnd, pmask->achSel, COMBO_MASK); 
               WinEnableControl(hwnd, MASK_STORE, enable && (idx < 0));
               // pulsante REMOVE abilitato se testo EF == item lista
               WinEnableControl(hwnd, MASK_DEL, idx >= 0);
               } // end case CBN_EFCHANGE:
               break;
            case CBN_LBSELECT:            // selezione item
               idx = isInListBox(hwnd, pmask->achSel, COMBO_MASK);
               WinEnableControl(hwnd, MASK_DEL, idx >= 0);
               break;
            default:
              break;
         } /* endswitch */
         break;
      case WM_COMMAND:
         switch (LOUSHORT(mp1)) {
            case MASK_OK:
               WinQueryDlgItemText(hwnd, COMBO_MASK, 64, pmask->achSel);
               if (flag)    // eventualmente aggiorna lista filespec
                  ProcMaskDlgExit(hwnd, pmask);
               SaveMaskDlgPos(hwnd, pmask);
               WinDismissDlg(hwnd, TRUE);
               break;
            case MASK_STORE:
               flag = TRUE;
               DlgLboxInsertItem(hwnd, COMBO_MASK, LIT_SORTASCENDING,
                                 pmask->achSel);
               DlgLboxSelectItem(hwnd, COMBO_MASK, -idx - 1);
               WinEnableControl(hwnd, MASK_STORE, FALSE);
               break;
            case MASK_DEL:
               flag = TRUE;
               idx = DlgLboxQuerySelectedItem(hwnd, COMBO_MASK);
               DlgLboxDeleteItem(hwnd, COMBO_MASK, idx);
               WinSetDlgItemText(hwnd, COMBO_MASK, "");
               break;
            default: 
               if (flag)    // eventualmente aggiorna lista filespec
                  ProcMaskDlgExit(hwnd, pmask);
               SaveMaskDlgPos(hwnd, pmask);
               WinDismissDlg(hwnd, FALSE);
               break;
         } /* endswitch */
         break;
      case WM_CLOSE:
         if (flag)    // eventualmente aggiorna lista filespec
            ProcMaskDlgExit(hwnd, pmask);
         SaveMaskDlgPos(hwnd, pmask);
         WinDismissDlg(hwnd, FALSE);
         break;
      default: 
         return WinDefDlgProc(hwnd, msg, mp1, mp2);
   } // end switch
   return (MRESULT) FALSE;
}
예제 #27
0
static MRESULT EXPENTRY AreaMsgBaseProc(HWND parent, ULONG message, MPARAM mp1, MPARAM mp2)
{
   extern AREALIST arealiste;
   extern HWND hwndhelp;
   static AREADEFLIST *pArea=NULL;
   char pchTemp[LEN_PATHNAME+1];
   SHORT sTemp;

   switch(message)
   {
      case WM_INITDLG:
         pArea=((AREAPAR *)mp2)->pAreaDef;
         WinSubclassWindow(WinWindowFromID(parent, IDD_AS_MSGBASE+9),
                           FileEntryProc);

         WinSendDlgItemMsg(parent, IDD_AS_MSGBASE+9,
                           EM_SETTEXTLIMIT,
                           MPFROMSHORT(LEN_PATHNAME),
                           (MPARAM) NULL);
         if (pArea)
         {
            WinSetDlgItemText(parent, IDD_AS_MSGBASE+9,
                              pArea->areadata.pathfile);

            switch(pArea->areadata.areaformat)
            {
               case AREAFORMAT_FTS:
                  WinCheckButton(parent, IDD_AS_MSGBASE+2, TRUE);
                  break;

               case AREAFORMAT_SQUISH:
                  WinCheckButton(parent, IDD_AS_MSGBASE+3, TRUE);
                  break;

               case AREAFORMAT_JAM:
                  WinCheckButton(parent, IDD_AS_MSGBASE+4, TRUE);
                  break;

               default:
                  WinCheckButton(parent, IDD_AS_MSGBASE+2, TRUE);
                  break;
            }
            switch(pArea->areadata.areatype)
            {
               case AREATYPE_NET:
                  WinCheckButton(parent, IDD_AS_MSGBASE+6, TRUE);
                  break;

               case AREATYPE_ECHO:
                  WinCheckButton(parent, IDD_AS_MSGBASE+7, TRUE);
                  break;

               case AREATYPE_LOCAL:
                  WinCheckButton(parent, IDD_AS_MSGBASE+12, TRUE);
                  break;
            }
            if (pArea->areadata.ulAreaOpt & AREAOPT_FROMCFG)
            {
               WinEnableControl(parent, IDD_AS_MSGBASE+2, FALSE);
               WinEnableControl(parent, IDD_AS_MSGBASE+3, FALSE);
               WinEnableControl(parent, IDD_AS_MSGBASE+4, FALSE);
               WinEnableControl(parent, IDD_AS_MSGBASE+6, FALSE);
               WinEnableControl(parent, IDD_AS_MSGBASE+7, FALSE);
               WinEnableControl(parent, IDD_AS_MSGBASE+12, FALSE);
               WinSendDlgItemMsg(parent, IDD_AS_MSGBASE+9, EM_SETREADONLY,
                                 (MPARAM)TRUE, (MPARAM) NULL);
               WinEnableControl(parent, IDD_AS_MSGBASE+10, FALSE);
            }
         }
         WinDefDlgProc(parent, message, mp1, mp2);
         SetFocusControl(parent, IDD_AS_MSGBASE+9);
         return (MRESULT) TRUE;

      case WM_CLOSE:
      case WM_DESTROY:
         if (!WinQueryWindowULong(parent, QWL_USER))
         {
            WinQueryDlgItemText(parent, IDD_AS_MSGBASE+9, LEN_PATHNAME+1,
                                pchTemp);
            if (strcmp(pArea->areadata.pathfile, pchTemp))
            {
               strcpy(pArea->areadata.pathfile, pchTemp);
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }

            if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+2))
               sTemp=AREAFORMAT_FTS;
            else
               if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+3))
                  sTemp=AREAFORMAT_SQUISH;
               else
                  if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+4))
                     sTemp=AREAFORMAT_JAM;
                  else
                     sTemp=AREAFORMAT_FTS;

            if (sTemp!=pArea->areadata.areaformat)
            {
               pArea->areadata.areaformat=sTemp;
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }

            if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+6))
               sTemp=AREATYPE_NET;
            else
               if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+7))
                  sTemp=AREATYPE_ECHO;
               else
                  if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+12))
                     sTemp=AREATYPE_LOCAL;
                  else
                     sTemp=AREATYPE_NET;

            if (sTemp != pArea->areadata.areatype)
            {
               pArea->areadata.areatype=sTemp;
               arealiste.bDirty = TRUE;
               pArea->dirty=TRUE;
            }
         }
         break;

      case WM_COMMAND:
         if (SHORT1FROMMP(mp2)==CMDSRC_PUSHBUTTON)
         {
            if(SHORT1FROMMP(mp1)==IDD_AS_MSGBASE+10)
            {
               WinQueryDlgItemText(parent, IDD_AS_MSGBASE+9,
                                   LEN_PATHNAME+1, pchTemp);
               if (GetPathname(parent, pchTemp)==DID_OK)
               {
                  char drive[_MAX_DRIVE];
                  char path[_MAX_DIR];
                  char name[_MAX_FNAME];
                  char ext[_MAX_EXT];

                  _splitpath(pchTemp, drive, path, name, ext);
                  if (WinQueryButtonCheckstate(parent, IDD_AS_MSGBASE+3))
                     _makepath(pchTemp, drive, path, name, "");
                  else
                  {
                    _makepath(pchTemp, drive, path, "", "");
                    pchTemp[strlen(pchTemp)-1]='\0';
                  }
                  WinSetDlgItemText(parent, IDD_AS_MSGBASE+9,
                                    pchTemp);
                  arealiste.bDirty = TRUE;
               }
            }
         }
         return (MRESULT) FALSE;

      case APM_REQCLOSE:
         if (WinQueryDlgItemTextLength(parent, IDD_AS_MSGBASE+9)==0)
         {
            /* Fehler, kein Pfadname */
            if (MessageBox(parent, IDST_MSG_NOPATHFILE, 0,
                           IDD_NOPATHFILE, MB_RETRYCANCEL | MB_ERROR) == MBID_CANCEL)
                return (MRESULT) 2;
            else
                return (MRESULT) 1;
         }
         return (MRESULT) 0;

      case APM_CANCEL:
         WinSetWindowULong(parent, QWL_USER, 1);
         break;

      default:
         break;
   }
   return WinDefDlgProc(parent,message,mp1,mp2);
}
예제 #28
0
파일: cdialog.cpp 프로젝트: kenjreno/lora3
BOOL CALLBACK CDialogDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
#endif
{
   int i;
   class CDialog *dlgClass;
   CPC_MSGMAP_ENTRY *msgMap = NULL;

#if defined(__OS2__)
   dlgClass = (class CDialog *)WinQueryWindowULong (hwnd, QWL_USER);
#elif defined(__NT__)
   dlgClass = (class CDialog *)GetWindowLong (hwnd, GWL_USERDATA);
#endif

   if (dlgClass != NULL) {
      dlgClass->m_msg = msg;
#if defined(__OS2__)
      dlgClass->m_mp1 = mp1;
      dlgClass->m_mp2 = mp2;
#elif defined(__NT__)
      dlgClass->m_wParam = wParam;
      dlgClass->m_lParam = lParam;
#endif

      msgMap = dlgClass->GetMessageMap ();
   }

   switch (msg) {
#if defined(__OS2__)
      case WM_INITDLG: {
         CDIALOG_DATA *cData = (CDIALOG_DATA *)mp2;
#elif defined(__NT__)
      case WM_INITDIALOG: {
         CDIALOG_DATA *cData = (CDIALOG_DATA *)lParam;
#endif

         dlgClass = cData->Dlg;
         dlgClass->m_hWnd = hwnd;
         dlgClass->lv_Selected = -1;
#if defined(__OS2__)
         WinSetWindowULong (hwnd, QWL_USER, (ULONG)dlgClass);
#elif defined(__NT__)
         SetWindowLong (hwnd, GWL_USERDATA, (LONG)dlgClass);
#endif

         dlgClass->OnInitDialog ();
#if defined(__OS2__)
         break;
#elif defined(__NT__)
         return ((BOOL)TRUE);
#endif
      }

#if defined(__OS2__)
      case WM_CONTROL:
         for (i = 0; msgMap[i].pfn != NULL; i++) {
            if (msgMap[i].nMessage == msg) {
               if (msgMap[i].nID >= SHORT1FROMMP (mp1) && msgMap[i].nLastID <= SHORT1FROMMP (mp1)) {
                  if (msgMap[i].nCode == SHORT2FROMMP (mp1)) {
                     (dlgClass->*msgMap[i].pfn) ();
                     break;
                  }
               }
            }
         }
         return (0);
#endif

#if defined(__NT__)
      case WM_NOTIFY: {
         LPNMHDR pnmh = (LPNMHDR)lParam;
         NM_LISTVIEW *pnmv = (NM_LISTVIEW *)lParam;

         if (pnmh->code == NM_DBLCLK)
            dlgClass->OnOK ();
         else if (pnmh->code == LVN_ITEMCHANGED) {
            if (!(pnmv->uNewState & LVIS_SELECTED) && (pnmv->uOldState & LVIS_SELECTED))
               dlgClass->lv_Selected = -1;
            if (pnmv->uNewState & LVIS_SELECTED)
               dlgClass->lv_Selected = (SHORT)pnmv->iItem;
         }
         else {
            for (i = 0; msgMap[i].pfn != NULL; i++) {
               if (msgMap[i].nMessage == msg && msgMap[i].nCode == pnmh->code) {
                  if (msgMap[i].nID >= pnmh->idFrom && msgMap[i].nLastID <= pnmh->idFrom) {
                     (dlgClass->*msgMap[i].pfn) ();
                     break;
                  }
               }
            }
         }
         return (0);
      }
#endif

#if defined(__OS2__)
      case WM_CHAR:
         if (SHORT1FROMMP (mp1) & KC_VIRTUALKEY && SHORT2FROMMP (mp2) == VK_F1)
            dlgClass->OnHelp ();
         break;
#endif

      case WM_HELP:
         dlgClass->OnHelp ();
         break;
/*
#if defined(__OS2__)
      case WM_HELP: {
         USHORT id;
         HWND hwndHelpInstance;

         id = WinQueryWindowUShort (hwnd, QWS_ID);
         hwndHelpInstance = WinQueryHelpInstance (dlgClass->owner_hWnd);
         WinSendMsg (hwndHelpInstance, HM_DISPLAY_HELP, MPFROM2SHORT (id, 0), MPFROMSHORT (HM_RESOURCEID));
         break;
      }
#endif
*/

      case WM_COMMAND:
#if defined(__OS2__)
         switch (SHORT1FROMMP (mp1)) {
#elif defined(__NT__)
         switch (LOWORD (wParam)) {
#endif
            case IDOK:
               dlgClass->OnOK ();
               break;
            case IDCANCEL:
               dlgClass->OnCancel ();
               break;
            case IDHELP:
               dlgClass->OnHelp ();
               break;
            default:
               for (i = 0; msgMap[i].pfn != NULL; i++) {
#if defined(__OS2__)
                  if (msgMap[i].nMessage == msg) {
                     if (msgMap[i].nID >= SHORT1FROMMP (mp1) && msgMap[i].nLastID <= SHORT1FROMMP (mp1)) {
#elif defined(__NT__)
                  if (msgMap[i].nMessage == msg && msgMap[i].nCode == HIWORD (wParam)) {
                     if (msgMap[i].nID >= LOWORD (wParam) && msgMap[i].nLastID <= LOWORD (wParam)) {
#endif
                        (dlgClass->*msgMap[i].pfn) ();
                        break;
                     }
                  }
               }
               break;
         }
         return (0);

#if defined(__NT__)
      case WM_CLOSE:
         EndDialog (hwnd, FALSE);
         break;
#endif

      default:
         if (msgMap != NULL) {
            for (i = 0; msgMap[i].pfn != NULL; i++) {
               if (msgMap[i].nMessage == msg) {
                  (dlgClass->*msgMap[i].pfn) ();
                  return (0);
               }
            }
         }
         break;
   }

#if defined(__OS2__)
   return (WinDefDlgProc (hwnd, msg, mp1, mp2));
#elif defined(__NT__)
   return ((BOOL)FALSE);
#endif
}

CDialog::CDialog (PSZ dialogTemplate, HWND p_hWnd)
{
   strcpy (dlgTemplate, dialogTemplate);
   owner_hWnd = p_hWnd;
   help_hWnd = NULL;
#if defined(__OS2__)
   WinSetPointer (HWND_DESKTOP, WinQuerySysPointer (HWND_DESKTOP, SPTR_WAIT, FALSE));
#elif defined(__NT__)
#endif
}

CDialog::~CDialog ()
{
#if defined(__OS2__)
   if (help_hWnd != NULL)
      WinDestroyHelpInstance (help_hWnd);
#elif defined(__NT__)
#endif
}

VOID CDialog::Center ()
{
#if defined(__OS2__)
   RECTL rc;
#elif defined(__NT__)
   RECT rc;
#endif

#if defined(__OS2__)
   WinQueryWindowRect (m_hWnd, &rc);
   rc.yTop = (WinQuerySysValue (HWND_DESKTOP, SV_CYSCREEN) - (rc.yTop - rc.yBottom)) / 2;
   rc.xLeft = (WinQuerySysValue (HWND_DESKTOP, SV_CXSCREEN) - (rc.xRight - rc.xLeft)) / 2;
   WinSetWindowPos (m_hWnd, NULL, rc.xLeft, rc.yTop, 0, 0, SWP_MOVE);
#elif defined(__NT__)
   GetWindowRect (m_hWnd, &rc);
   rc.top = (GetSystemMetrics (SM_CYSCREEN) - (rc.bottom - rc.top)) / 2;
   rc.left = (GetSystemMetrics (SM_CXSCREEN) - (rc.right - rc.left)) / 2;
   SetWindowPos (m_hWnd, NULL, rc.left, rc.top, 0, 0, SWP_NOSIZE|SWP_NOZORDER);
#endif
}

LONG CDialog::DoModal ()
{
   LONG ulResult = 0L;
   CDIALOG_DATA cDialog;

   cDialog.cbSize = sizeof (CDIALOG_DATA);
   cDialog.Dlg = this;

#if defined(__OS2__)
   WinSetPointer (HWND_DESKTOP, WinQuerySysPointer (HWND_DESKTOP, SPTR_ARROW, FALSE));
   ulResult = WinDlgBox (HWND_DESKTOP, owner_hWnd, CDialogDlgProc, NULLHANDLE, atoi (dlgTemplate), &cDialog);
#elif defined(__NT__)
   ulResult = DialogBoxParam (hinst, MAKEINTRESOURCE (atoi (dlgTemplate)), owner_hWnd, (DLGPROC)CDialogDlgProc, (LPARAM)&cDialog);
#endif

   return (ulResult);
}

// ----------------------------------------------------------------------
// Windowing API replacement
// ----------------------------------------------------------------------

VOID CDialog::EndDialog (USHORT Result)
{
#if defined(__OS2__)
   WinDismissDlg (m_hWnd, Result);
#elif defined(__NT__)
   ::EndDialog (m_hWnd, Result);
#endif
}

VOID CDialog::GetDlgItemText (int id, PSZ text, USHORT size)
{
#if defined(__OS2__)
   WinQueryDlgItemText (m_hWnd, id, size, text);
#elif defined(__NT__)
   ::GetDlgItemText (m_hWnd, id, text, size);
#endif
}

VOID CDialog::GetDlgItemText (int id, USHORT size, PSZ text)
{
#if defined(__OS2__)
   WinQueryDlgItemText (m_hWnd, id, size, text);
#elif defined(__NT__)
   ::GetDlgItemText (m_hWnd, id, text, size);
#endif
}
예제 #29
0
/**************************************************************************
*
* FUNCTION NAME: ProcessRegisterDialog
*
* DESCRIPTION:
*
*
* INPUT PARAMETERS:
*     None.
*
* OUTPUT PARAMETERS:
*     None.
*
**************************************************************************/
MRESULT EXPENTRY ProcessRegisterDialog (HWND hwnd, 
                                    	 ULONG msg,
                                    	 MPARAM mp1, 
                                    	 MPARAM mp2)
{
	CHAR szID[50];

   switch (msg)
   {
      case WM_INITDLG :
		   /* Center the dialog box in the frame window of the parent */
			CenterDialog (hwnd);
         return (0);

      case WM_COMMAND :
         switch (SHORT1FROMMP (mp1))
         {
            case DID_OK:
				   WinQueryDlgItemText (hwnd, REG_NAME_ID, 
														  REGISTER_NAME_LEN, gszRegName);
				   WinQueryDlgItemText (hwnd, REG_ID_ID, sizeof(szID), szID);
					if (CheckPassword (gszRegName, szID))
					{
						/* The password is cool!  Save the settings now */
						WinDlgBox (HWND_DESKTOP, hwndDefClient, 
										  (PFNWP) ProcessProdInfoDialog,
										  0L, CONGRATS_DLG_ID, NULL);
						gfRegistered = TRUE;
						WriteIniFile ();

						/* Disable the register menu item now we're registered */
   					WinEnableMenuItem (hwndMenu, MENU_REGISTER_ID, !gfRegistered);

               	WinDismissDlg (hwnd, DID_OK);
					}
					else
					{
						WinDlgBox (HWND_DESKTOP, hwndDefClient, 
										  (PFNWP) ProcessProdInfoDialog,
										  0L, SORRY_DLG_ID, NULL);
					}
               return (0);

            case DID_CANCEL:
				   /* Dismiss the dialog without saving the values */
               WinDismissDlg (hwnd, DID_CANCEL);
               return (0);

			   case DID_HELP:
				   /* Display the keys help panel */
    				WinSendMsg (hwndHelpInstance, HM_DISPLAY_HELP,
                            MPFROM2SHORT(PANEL_REGISTER, NULL), 
									 MPFROMSHORT(HM_RESOURCEID));
               return (0);

            default:
               break;
         }
			break;

      default:
		   break;
   }

   return (WinDefDlgProc (hwnd, msg, mp1, mp2));
}
예제 #30
0
MRESULT EXPENTRY fnwpNotifyDlg(HWND hwnd,USHORT msg,MPARAM mp1,MPARAM mp2)
  {
  static MSG *pMessage;
  NOTIFYLST *pNotify;
  ULONG ulSubNumber;
  ULONG ulGroupNumber;
  int iMsgLen;
  USHORT usLength;
  USHORT usSubCount;
  ULONG *pulSubNum;
  char szMessage[80];
  int iIndex;
  static TID tid;
  BYTE *pData;

  switch (msg)
    {
    case WM_INITDLG:
      pMessage = (MSG *)mp2;
      bNotifyLoop = FALSE;
      WinSendDlgItemMsg(hwnd,NOTIFY_SUB_NUMBER,
                                SPBM_SETLIMITS,
                                (MPARAM)usSubscriberListCount,
                                (MPARAM)1);
      WinSendDlgItemMsg(hwnd,NOTIFY_MESSAGE,MLM_FORMAT,(MPARAM)MLFIE_WINFMT,(MPARAM)NULL);
      break;
    case WM_COMMAND:
      switch(SHORT1FROMMP(mp1))
        {
        case DID_OK:
          if (bNotifyLoop)
            break;
          WinSendDlgItemMsg(hwnd,NOTIFY_SUB_NUMBER,SPBM_QUERYVALUE,&ulSubNumber,MPFROM2SHORT(0,SPBQ_DONOTUPDATE));
          iMsgLen = WinQueryDlgItemTextLength(hwnd,NOTIFY_MESSAGE);
//          iMsgLen = (int)WinSendDlgItemMsg(hwnd,NOTIFY_MESSAGE,MLM_QUERYTEXTLENGTH,(MPARAM)NULL,(MPARAM)NULL);
          if (iMsgLen <= 0)
            {
            sprintf(szMessage,"Message is too short, length = %u",iMsgLen);
            MessageBox(hwnd,szMessage);
            break;
            }
          if (astSubList[ulSubNumber].usMaxMsgLen < iMsgLen)
            {
            sprintf(szMessage,"Message is to long for defined subscriber, remove at least %u characters.",(iMsgLen - astSubList[ulSubNumber].usMaxMsgLen));
            MessageBox(hwnd,szMessage);
            break;
            }
          pNotify = (NOTIFYLST *)&pMessage->byData;
          pNotify->usSubCount = 1;
          pNotify->usGroupCount = 0;
          pNotify->usMsgLen = (USHORT)iMsgLen;
          pData = &pNotify->byData;
          iMsgLen = WinQueryDlgItemText(hwnd,NOTIFY_MESSAGE,(iMsgLen + 1),pData);
          pulSubNum = (ULONG *)(pData + iMsgLen);
          usSubCount = 0;
          for (iIndex = 0;iIndex < pNotify->usSubCount;iIndex++)
            {
            usSubCount++;
            *pulSubNum = (ULONG)ulSubNumber;
            pulSubNum++;
            }
          for (iIndex = 0;iIndex < pNotify->usGroupCount;iIndex++)
            {
            usSubCount++;
            *pulSubNum = (ULONG)ulGroupNumber;
            pulSubNum++;
            }
          usLength = ((sizeof(ULONG) * usSubCount) + (USHORT)iMsgLen);
          pMessage->cbDataSize = (usLength + sizeof(NOTIFYLST) - 1);
          if (Checked(hwnd,NOTIFY_CONTINUOUSLY))
            {
            pMessage->fMessageType = REQ_NOTIFY;
            pMessage->cbSize = (pMessage->cbDataSize + sizeof(MSG) - 1);
            bNotifyLoop = TRUE;
            pNotifyLoopMsg = pMessage;
            DosCreateThread(&tid,(PFNTHREAD)NotifyLoopThread,(ULONG)pMessage,0,8192);
            }
          else
            WinDismissDlg(hwnd,TRUE);
          break;
        case DID_CANCEL:
          if (bNotifyLoop)
            DosKillThread(tid);
          WinDismissDlg(hwnd,FALSE);
          break;
        default:
          return(WinDefDlgProc(hwnd,msg,mp1,mp2));
        }
      break;
    default:
      return(WinDefDlgProc(hwnd,msg,mp1,mp2));
    }
  return(FALSE);
  }