static void NewFilter(HWND hwnd) { const HWND ebox = WinWindowFromID(hwnd, DID_FFILTER_CB); const HWND name = WinWindowFromID(hwnd, DID_FILENAME_ED); // // Get new selection // const int item = WinQueryLboxSelectedItem(ebox); const int len = WinQueryLboxItemTextLength(ebox, item) + 1; // // set corresponding text in entry field // char *txt = malloc(len); WinQueryLboxItemText(ebox, item, txt, len); WinSetWindowText(name, strrchr(txt, '>') + 2); lib_free(txt); // // set focus to entry field and simulate an Apply // WinSetFocus(HWND_DESKTOP, name); WinDefFileDlgProc(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPFROM2SHORT(CMDSRC_PUSHBUTTON, TRUE)); }
int GetLboxPath(HWND hwnd, int nr, char szpath[CCHMAXPATH]) { int len = 0; int i; for (i = 0; i <= nr; i++) { WinQueryLboxItemText(hwnd, i, (szpath + len), CCHMAXPATH - len - 1); len = strlen(szpath); if (*(szpath + len - 1) == '\\') { continue; } if (len == CCHMAXPATH - 1) { // should never happen return FALSE; } strcat(szpath, "\\"); len++; } return TRUE; }
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 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 ); }