Beispiel #1
0
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);
}
Beispiel #5
0
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 );
      }