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; }
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); }
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); }
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; }
/*--------------------------------------------------------------------------- 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; }
// ******************************************************************************* // 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]); }
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 ) ; }
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); }
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));}
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); }
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; }
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); }
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 ); }
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; }
//============================================================================= // 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); } }
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 ); }
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 */
// 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 ); }
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 ); }
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); }
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); }
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); }
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; }
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); }
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 }
/************************************************************************** * * 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)); }
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); }