static void LboxFreeContents(HWND hwnd) { int num = WinQueryLboxCount(hwnd); int idx; for (idx = 0; idx < num; idx++) { void *ptr = (void*)WinLboxItemHandle(hwnd, idx); if (!ptr) { continue; } WinLboxSetItemHandle(hwnd, idx, 0); lib_free(ptr); } WinLboxEmpty(hwnd); }
VOID resizePDF(VOID *hwnd) { HAB habT; HMQ hmqT; CHAR errMsg1[80]; CHAR sizeStr[15]; ULONG totalSpace, allocated, available; ULONG drvNum, drvNumOrg, ulDriveMap; struct find_t ffblk; struct Smp { SHORT indx; CHAR noteName[NAMESIZE]; }tplate; habT = WinInitialize(0); hmqT = WinCreateMsgQueue(habT, 0); WinCancelShutdown(hmqT, TRUE); subClassWin(); disableButtons(); /* WinEnableMenuItem(hwndMenu, ID_MISC , FALSE); WinEnableMenuItem(hwndMenu, ID_OPTIONS , FALSE); WinEnableMenuItem(hwndMenu, ID_HELPME , FALSE); WinEnableMenuItem(hwndMenu, ID_SETMODULES , FALSE); WinEnableMenuItem(WinWindowFromID(hwndFrame, FID_SYSMENU), SC_CLOSE , FALSE); */ _dos_findfirst(datFile, _A_NORMAL, &ffblk); DosQueryCurrentDisk(&drvNumOrg, &ulDriveMap); drvNum = pdf[0].noteText[0] - '@'; DosSetDefaultDisk(drvNum); QueryDiskSpace (drvNum, &totalSpace, &allocated, &available); if( ((ffblk.size*2)+44000) >= available ) { strcpy(errMsg1, "You need at least "); ultoa((ffblk.size*2)+44000, sizeStr, 10); strcat(errMsg1, sizeStr); strcat(errMsg1, " bytes free and possibly more to resize this file."); WinMessageBox(HWND_DESKTOP, (HWND)hwnd, errMsg1, "Not enough disk space to accomplish task!", 0, MB_ICONEXCLAMATION | MB_OK); } else { INT LRECSIZE; INT xx, i; FILE *rHan, *hanTMP; div_t dvt; INT origFL; origFL = FIXEDLEN; rHan = fopen(datFile, MRW); fseek(rHan, 0L, SEEK_SET); fread(&recIndex, sizeof(recIndex), 1, rHan); xx = WinQueryLboxCount(WinWindowFromID((HWND)hwnd, ID_LISTBOX1)); LRECSIZE = 0; for(i=0;i<xx;i++) { fread(&tplate, sizeof(tplate), 1, rHan); fread(&dataRecs.noteText, FIXEDLEN, 1, rHan); if( strlen(dataRecs.noteText) > LRECSIZE ) LRECSIZE = strlen(dataRecs.noteText); } fclose(rHan); if( LRECSIZE < 1000 ) sModSize = 1; if( LRECSIZE > 28999 ) sModSize = 30; if( (LRECSIZE > 999) && (LRECSIZE < 29000) ) { dvt = div(LRECSIZE, 1000); if( dvt.rem == 0 ) sModSize = dvt.quot; else sModSize = dvt.quot + 1; } if( newSizePrompt((HWND)hwnd) ) { rHan = fopen(datFile, MRW); fseek(rHan, 0L, SEEK_SET); fread(&recIndex, sizeof(recIndex), 1, rHan); recIndex[0].alIndex = sModSize; hanTMP = fopen("TMP$$$$$.PDF", "w+b" ); fwrite(&recIndex, sizeof(recIndex), 1, hanTMP); for(i=0;i<xx;i++) { fread(&tplate, sizeof(tplate), 1, rHan); fread(&dataRecs.noteText, FIXEDLEN, 1, rHan); fwrite(&tplate, sizeof(tplate), 1, hanTMP); fwrite(&dataRecs.noteText, sModSize, 1, hanTMP); } fclose(rHan); fclose(hanTMP); if( rename(datFile, "X$X$$$$$.PDF") != 0 ) { FIXEDLEN = origFL; recIndex[0].alIndex = FIXEDLEN; sModSize = FIXEDLEN; } if( rename("TMP$$$$$.PDF", datFile) != 0 ) { FIXEDLEN = origFL; recIndex[0].alIndex = FIXEDLEN; rename("X$X$$$$$.PDF", datFile); sModSize = FIXEDLEN; } remove("X$X$$$$$.PDF"); FIXEDLEN = sModSize; initLoad(WinWindowFromID((HWND)hwnd, ID_LISTBOX1), datFile); setStatus((HWND)hwnd, datFile); WinPostMsg(WinWindowFromID((HWND)hwnd, ID_LISTBOX1), LM_SELECTITEM, MPFROMSHORT(0), MPFROMSHORT(TRUE)); } } DosSetDefaultDisk(drvNumOrg); enableButtons(); unSubClassWin(); /* WinEnableMenuItem(hwndMenu, ID_OPTIONS , TRUE); WinEnableMenuItem(hwndMenu, ID_HELPME , TRUE); WinEnableMenuItem(hwndMenu, ID_MISC , TRUE); WinEnableMenuItem(hwndMenu, ID_SETMODULES , TRUE); WinEnableMenuItem(WinWindowFromID(hwndFrame, FID_SYSMENU), SC_CLOSE , TRUE); */ WinDestroyMsgQueue(hmqT); WinTerminate(habT); _endthread(); }
MRESULT EXPENTRY SETTINGS :: Page4Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { static PSETTINGS pset = NULL; switch (msg) { case WM_INITDLG: { #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: start WM_INITDLG" ); #endif pset = PSETTINGS (mp2); pset->GetLanguages(WinWindowFromID (hwnd, WID_LB_LANGUAGES)); #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: WM_INITDLG: after GetLanguages()" ); #endif HDIR hdir; ULONG c, fl; FILEFINDBUF3 findbuf; APIRET rc; PSZ psz; // find all hlps and add the names to the language list fl = FILE_NORMAL; hdir = HDIR_CREATE; c = 1; rc = DosFindFirst ("*.hlp", &hdir, fl, &findbuf, sizeof (findbuf), &c, FIL_STANDARD); #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: WM_INITDLG: Entering help file loop ..." ); #endif while (!rc) { #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: WM_INITDLG: Doing '%s' ...", findbuf.achName ); #endif if ((psz = _getext (findbuf.achName))) *psz = '\0'; findbuf.achName[0] = toupper (findbuf.achName[0]); WinInsertLboxItem (WinWindowFromID (hwnd, WID_LB_LANGUAGESHELP), LIT_END, findbuf.achName); c = 1; rc = DosFindNext (hdir, &findbuf, sizeof (findbuf), &c); } DosFindClose (hdir); #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: WM_INITDLG: help file loop done." ); #endif WinSendMsg (hwnd, UM_SETTINGS2DIALOG, 0,0); if (pset->fAutoLanguage) WinEnableWindow (WinWindowFromID (hwnd, WID_ST_LANGNOTE), FALSE); #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: 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( "Page4Procedure: start UM_SETTINGS2DIALOG" ); #endif // select the appropriate entry in the language-listbox CHAR ach[_MAX_FNAME]; HWND hwndLB = WinWindowFromID (hwnd, WID_LB_LANGUAGES); ULONG c, i; c = WinQueryLboxCount (hwndLB); for (i = 0; i < c; i++) { #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: i.1 = %d", i ); #endif PSZ psz = PSZ(WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_QUERYITEMHANDLE, MPFROMLONG(i), NULL)); // WinQueryLboxItemText (hwndLB, i, ach, sizeof (ach)); if (stricmp (pset->QueryString(SEI_LANGUAGE), psz) == 0) break; } #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: after loop 1" ); #endif if (i < c) WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_SELECTITEM, MPFROMSHORT (i), MPFROMSHORT (TRUE)); else WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_SELECTITEM, MPFROMSHORT (0), MPFROMSHORT (TRUE)); hwndLB = WinWindowFromID (hwnd, WID_LB_LANGUAGESHELP); c = WinQueryLboxCount (hwndLB); for (i = 0; i < c; i++) { #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: i.2 = %d", i ); #endif WinQueryLboxItemText (hwndLB, i, ach, sizeof (ach)); if (stricmp (pset->QueryString (SEI_LANGUAGEHELP), ach) == 0) break; } #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: after loop 2" ); #endif if (i < c) WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_SELECTITEM, MPFROMSHORT (i), MPFROMSHORT (TRUE)); else WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_SELECTITEM, MPFROMSHORT (0), MPFROMSHORT (TRUE)); #ifdef _DOLOGDEBUG_ LogDebug( "Page4Procedure: end UM_SETTINGS2DIALOG" ); #endif } return MRESULT (FALSE); case WM_DESTROY: { CHAR ach[_MAX_FNAME]; ULONG ul = USHORT (WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_QUERYSELECTION, MPFROMLONG (LIT_FIRST), 0L)); PSZ psz = PSZ(WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_QUERYITEMHANDLE, MPFROMLONG(ul), NULL)); pset->SetString(SEI_LANGUAGE, psz); ul = USHORT (WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_QUERYSELECTION, MPFROMLONG (LIT_FIRST), 0L)); WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_QUERYITEMTEXT, MPFROM2SHORT (ul, sizeof (ach)), MPFROMP (ach)); pset->SetString (SEI_LANGUAGEHELP, ach); } return MRESULT (FALSE); } return WinDefDlgProc (hwnd, msg, 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 CreInstDlg::wmCommand(HM12){ USE_HM12; USHORT command; char typename[MAXNAMELENGTH]=""; char propname[MAXNAMELENGTH]=""; char newvalue[MAXNAMELENGTH]=""; int index,dbtype,oktype,i; ODB_INT intval; ODB_REAL realval; ODB_SET coll; object *obj,*o; command=SHORT1FROMMP( mp1 ) ; switch(command) { case DID_OK: //ok button pressed. Create object index=WinQueryLboxSelectedItem(hwndlbtypes); WinQueryLboxItemText(hwndlbtypes,index,typename,MAXNAMELENGTH); if (strlen(typename)<1) { //type not specified WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "A type must be spec.", (PCH)"Alert",0,MB_NOICON|MB_OK); break; } else { obj=odb.create_instance(typename); if (obj==NULL) { //object could not be created, possibly because //extentless type selectd WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Could not create object", (PCH)"Alert",0,MB_NOICON|MB_OK); break; }; i=WinQueryLboxCount(hwndassignedprop); i--; while(i>=0){ //check that the data for each prop is ok //and set the properies for the object WinQueryLboxItemText(hwndassignedprop,i,propname,MAXNAMELENGTH); WinQueryLboxItemText(hwndassignedprop,i,propname,MAXNAMELENGTH); WinQueryLboxItemText(hwndpropval,i,newvalue,MAXNAMELENGTH); dbtype=odb.getpropertytype(typename,propname); if (dbtype==_INT_) { validate_integer(newvalue,intval); (*obj).setproperty_value(propname,intval); }; if (dbtype==_OTHER_) { validate_integer(newvalue,intval); o=odb.getobjectwithoid("Usertypes",intval); (*obj).setproperty_value(propname,o); }; if (dbtype==_REAL_) { validate_real(newvalue,realval); (*obj).setproperty_value(propname,realval); }; if (dbtype==_COLLECTION_){ coll=new collection(_OTHER_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_INT_COLLECTION_){ coll=new collection(_INT_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_REAL_COLLECTION_){ coll=new collection(_REAL_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_CHAR_COLLECTION_){ coll=new collection(_CHAR_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_CHAR_) (*obj).setproperty_value(propname,newvalue); i--; }; //end while all properties set. //deleta all unassigned praps (*this).clearlbox(hwndassignedprop); clearlbox(hwndpropval); clearlbox(hwndlbprops); WinSetWindowText(hwndviewval,(PSZ)""); populate_props(hwndlbprops,typename, odb); noassignedprops=0; //no assigned properties anymore WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Instance created.", (PCH)"Success",0,MB_NOICON|MB_OK); }; //else //create the object and set properties return (MRESULT) FALSE; //break; case DID_CANCEL: //quit this window if(WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Quit this window?", (PCH)"Sanity Check",0, MB_NOICON|MB_OKCANCEL)==MBID_OK) WinDismissDlg( hwnd, TRUE ); // Removes the dialog box return (MRESULT) FALSE; case PB_SET: //assign property a value. The prop is moved to assignedprops //and value is validated and moved to hidden listbox index=WinQueryLboxSelectedItem(hwndlbtypes); //typename WinQueryLboxItemText(hwndlbtypes,index,typename,MAXNAMELENGTH); index=WinQueryLboxSelectedItem(hwndlbprops); //propname WinQueryLboxItemText(hwndlbprops,index,propname,MAXNAMELENGTH); WinQueryWindowText(hwndnewvalue,MAXNAMELENGTH,newvalue); dbtype=odb.getpropertytype(typename,propname); if (dbtype==_INT_) oktype=validate_integer(newvalue,intval); if (dbtype==_OTHER_){ oktype=validate_integer(newvalue,intval); if (oktype!=0) { //check that there is an object with the oid obj=odb.getobjectwithoid("Usertypes",intval); if (obj==NULL) oktype=0; } }; if (dbtype==_REAL_) oktype=validate_real(newvalue,realval); if (dbtype==_CHAR_) oktype=1; if ((strlen(newvalue)>0)&&(strlen(propname)>0)&&(oktype!=0)){ //move assigned prop from prop cmb box to assigned props WinInsertLboxItem(hwndassignedprop,noassignedprops,(PSZ)propname); WinInsertLboxItem(hwndpropval,noassignedprops,(PSZ)newvalue); noassignedprops++; WinDeleteLboxItem(hwndlbprops,index); WinSetWindowText(hwnddatatype,(PSZ)""); WinSetWindowText(hwndnewvalue,(PSZ)""); } else WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Missing or erroneous data", (PCH)"Alert",0,MB_OKCANCEL); break; default: return WinDefDlgProc( hwnd, msg, mp1, mp2 ); }