⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 一套美国国家宇航局人工智能中心NASA的专家系统工具源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	 DialogBox(hInst,"List_Manager", hMain, lpProc);	 FreeProcInstance(lpProc);	 break;      }#endif#if DEFFACTS_CONSTRUCT      case IDM_BROWSE_FACTS:      {  FARPROC lpProc;	 lpProc = MakeProcInstance(DefFactManager, hInst);	 DialogBox(hInst,"List_Manager", hMain, lpProc);	 FreeProcInstance(lpProc);	 break;      }#endif#if DEFFUNCTION_CONSTRUCT      case IDM_BROWSE_FUNCTION:      {  FARPROC lpProc;	 lpProc = MakeProcInstance(DefFunctionManager, hInst);	 DialogBox(hInst,"List_Manager", hMain, lpProc);	 FreeProcInstance(lpProc);	 break;      }#endif#if DEFGENERIC_CONSTRUCT      case IDM_BROWSE_GENERIC:      {  FARPROC lpProc;	 lpProc = MakeProcInstance(DefGenericManager, hInst);	 DialogBox(hInst,"List_Manager", hMain, lpProc);	 FreeProcInstance(lpProc);	 break;      }#endif#if OBJECT_SYSTEM      case IDM_BROWSE_CLASS:      {  FARPROC lpProc;	 lpProc = MakeProcInstance(DefClassManager, hInst);	 DialogBox(hInst,"List_Manager", hMain, lpProc);	 FreeProcInstance(lpProc);	 break;      }      case IDM_BROWSE_INSTANCES:      {  FARPROC lpProc;	 lpProc = MakeProcInstance(DefInstanceManager, hInst);	 DialogBox(hInst,"List_Manager", hMain, lpProc);	 FreeProcInstance(lpProc);	 break;      }#endif   }}/**************************************************** DoFileChoice: Process all menu options from*    the FILE menu.****************************************************/VOID DoFileChoice ( hMain, wParam )   HWND hMain;   WORD wParam;{  extern HANDLE hInst;   switch (wParam)   {  /*----------------------------+      | Startup Editor DDEML Client |      +----------------------------*/      case IDM_FILE_EDITOR:      {  UINT wReturn;	 char szMsg[80];	 {#if WIN_32	  wReturn = WinExec("clpedt32.exe", SW_SHOW);#else     wReturn = WinExec("clpedt16.exe", SW_SHOW);#endif	    if (wReturn < 32)	    {  switch (wReturn)	       {  case 0: sprintf (szMsg, "Not Enough Memory."); break;		  case 1:		  case 2: sprintf (szMsg, "%s %s","File not Found.",		       "Make sure the CLIPS directory is in your DOS Path.");		       break;		  case 8: sprintf (szMsg, "Not Enough Memory."); break;		  case 16:		  {  HWND hWnd = FindWindow("ClipsEditWClass", NULL);		     SetFocus (hWnd);		     break;		  }		  default:		      sprintf(szMsg, "WinExec failed; error code = %d", wReturn);		      break;	       }	       if ( wReturn != 16 )		  MessageBox (NULL, szMsg, "Load Error", MB_ICONHAND | MB_OK );	    }	 }	 break;      }       /*------------------------+      | Open/Close Dribble File |      +------------------------*/      case IDM_FILE_DRIBBLE:      {  OpenDribbleFile ( hMain, wParam );	 break;      }      /*-------------------------+      | Save File as Binary File |      +-------------------------*/      case IDM_FILE_SBINARY:      {  SaveBinaryFile ( hMain, wParam );	 break;      }      /*-----------------------------------+      | Load a file (CLP, Binary or Batch) |      +-----------------------------------*/      case IDM_FILE_LOAD:      case IDM_FILE_LBATCH:      case IDM_FILE_LBINARY:      {  DoLoad ( hMain, wParam );	 break;      }      /*---------------+      | Start Shutdown |      +---------------*/      case IDM_FILE_QUIT:      {  extern SCREEN WinFact, WinGlobal, WinInst, WinAgenda, WinDialog;	 HWND hEditor = FindWindow("ClipsEditWClass", NULL);	 if ( hEditor != NULL )	    PostMessage ( hEditor, WM_COMMAND, wParam, NULL );	 WinHelp ( WinDialog.hWnd, "CLIPS6.HLP", HELP_QUIT, NULL);	 PrintCLIPS ("wclips","(exit)\n");	 DestroyWindow ( hMain );	 DestroyWindow ( WinFact.hWnd );	 DestroyWindow ( WinGlobal.hWnd);	 DestroyWindow ( WinInst.hWnd );	 DestroyWindow ( WinAgenda.hWnd );	 QuitDDE ( );	 SetCommandString("(exit)\n");	 ExitCLIPS(0);      }      /*---------------+      | Start Shutdown |      +---------------*/      case IDM_EDIT_PASTE:      {  extern SCREEN WinDialog;	 HANDLE hData;	 LPSTR  pData;	 int x;	 OpenClipboard ( WinDialog.hWnd );	 hData = GetClipboardData (CF_TEXT );	 pData = GlobalLock ( hData );	 for (x=0; x < strlen ( pData ); x++ )	   if ( pData[x] == '\r' )	      pData[x] = ' ';	 SetCommandString(pData);	 PrintCLIPS ("stdout", pData);	 GlobalUnlock ( hData );	 CloseClipboard ( );	 break;      }   }}/*************************************************** DoHelpChoice: Process all menu options from*    the FILE menu.**************************************************/VOID DoHelpChoice ( hMain, wParam )   HWND hMain;   WORD wParam;{  switch (wParam)   {   /*------------------+       | Show About WinDialog |       +------------------*/       case IDM_HELP_ABOUT:       {  extern HANDLE hInst;	  FARPROC lpProc;	  lpProc = MakeProcInstance(AboutDlg, hInst);	  DialogBox(hInst,"AboutBox", hMain, lpProc);	  FreeProcInstance(lpProc);	  break;       }       case IDM_HELP_CLIPS:       {  extern SCREEN WinDialog;	  WinHelp ( WinDialog.hWnd, "CLIPS6.HLP", HELP_INDEX, NULL);	  break;       }       /*---------------------------+       | Do Command Complete Dialog |       +---------------------------*/      case IDM_HELP_COMPLETE:		{  char *buffer;	 int  length;	 extern char CompleteString[255];	 buffer = GetCommandString();         	 if ( buffer == NULL)	 {  MessageBeep(0);		 break;	 }	 length = strlen (buffer);	 buffer = GetCommandCompletionString ( buffer, length );	 if ( buffer == NULL)	 {  MessageBeep(0);		 break;	 }	 length = strlen ( buffer );	 if ( DoCommandCompletion ( buffer, 1))	 {  AppendCommandString (&(CompleteString[length]));	    AppendCommandString (" ");	    PrintCLIPS ("wclips",(&(CompleteString[length])));	    PrintCLIPS ("wclips"," ");	 }      }   }}/******************************************************************** DoModuleChoice: Sets the current module based on the*    menu item input.*******************************************************************/VOID DoModuleChoice ( hMenu, wParam )   HMENU hMenu;   WORD wParam;{  char moduleName[255];   GetMenuString ( hMenu, wParam, (LPSTR)&moduleName, 255, MF_BYCOMMAND);   SetCurrentModule (FindDefmodule((char *)moduleName));}/************************************************************************ DoModuleChoice: Will create the all popup menu items for Module Menu.***********************************************************************/VOID UpdateModuleMenu ( ModuleMenu )   HMENU ModuleMenu;{  char moduleTitle[255];   int position;   struct defmodule *theModule;   int value = GetMenuItemCount ( ModuleMenu );   /*-----------------------------------------------+   | Delete all Menu Items in the Module Popup Menu |   +-----------------------------------------------*/   while ( value )   {  DeleteMenu (ModuleMenu, 0, MF_BYPOSITION);      value = GetMenuItemCount ( ModuleMenu );   }   /*-----------------------------------------------+   | Create a new menu item for each defined module |   +-----------------------------------------------*/   for ( theModule = GetNextDefmodule(NULL), position = IDM_MODULE_ONE ;      theModule != NULL;      theModule = GetNextDefmodule(theModule), position ++)   {  strncpy ((char *)moduleTitle,GetDefmoduleName(theModule),255);      moduleTitle[255] = '\0';      InsertMenu (ModuleMenu, -1, MF_BYPOSITION|MF_STRING, position, moduleTitle);      if (theModule == GetCurrentModule())	 CheckMenuItem (ModuleMenu, position, MF_BYCOMMAND|MF_CHECKED);   }}/************************************************************* UpdateMenu: Function which will enable/disable interface*   menu items based on rule execution and other factors. ************************************************************/VOID UpdateMenu ( VOID ){  extern SCREEN WinDialog;   HMENU hMenu = GetMenu(WinDialog.hWnd );   extern int ShiftKeyDown;   /*----------------------------------+   | Value - Flag used to execute code |   | once for each wait/active state.  |   +----------------------------------*/   static int value = 0;   if (EvaluatingTopLevelCommand || BatchActive() )   {  if ( value )      {  value = 0;	 /*---------------------------------+	 | Gray File, Execute & Browse Menu |	 | items when a rule is being fired |	 +---------------------------------*/	 EnableMenuItem(hMenu,IDM_FILE_LOAD,   MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_FILE_LBINARY,MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_FILE_SBINARY,MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_FILE_LBATCH, MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_FILE_QUIT,   MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_EDIT_PASTE,  MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_HELP_COMPLETE, MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_WIN_CLEAR,   MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_EXE_RESET,   MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_EXE_STEP,    MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_EXE_CLEAR,   MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_RULE,     MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_FACTS,    MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_TEMPLATE, MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_FUNCTION, MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_GENERIC,  MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_GLOBAL,   MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_CLASS,    MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_INSTANCES,MF_BYCOMMAND|MF_GRAYED);	 EnableMenuItem(hMenu,IDM_BROWSE_AGENDA,   MF_BYCOMMAND|MF_GRAYED);	 if (DeleteMenu(hMenu,IDM_EXE_RUN, MF_BYCOMMAND ))	    InsertMenu (hMenu,IDM_EXE_STEP,MF_BYCOMMAND,IDM_EXE_HALT,"&Halt \tCtrl+C");	 DrawMenuBar (WinDialog.hWnd);	 StartWaitCursor();      }      else      {  /*--------------------------------+	 | Update Halt and Halt Now menu   |	 | items based on shift key status.|	 +--------------------------------*/	 if ( ShiftKeyDown )	 {  if (DeleteMenu(hMenu,IDM_EXE_HALT, MF_BYCOMMAND ))	    { InsertMenu (hMenu,IDM_EXE_STEP,MF_BYCOMMAND,IDM_EXE_HALT_NOW,"&Halt Now!!\tCtrl+Shift+C");	      DrawMenuBar (WinDialog.hWnd);	    }	 }	 else	 {  if (DeleteMenu(hMenu,IDM_EXE_HALT_NOW, MF_BYCOMMAND ))	    {  InsertMenu (hMenu,IDM_EXE_STEP,MF_BYCOMMAND,IDM_EXE_HALT,"&Halt");	       DrawMenuBar (WinDialog.hWnd);	    }	 }      }   }   else   {   if (!value)       {  value = 1;	  UpdateCursor ( ARROW_CURSOR );	  /*-------------------------------------+	  | Enable File, Execute & Browse Menu   |	  | items when a rule is not being fired.|	  +-------------------------------------*/	  EnableMenuItem(hMenu,IDM_FILE_LOAD,   MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_FILE_LBINARY,MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_FILE_SBINARY,MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_FILE_LBATCH, MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_FILE_QUIT,   MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_HELP_COMPLETE, MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_EXE_RESET,   MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_EXE_STEP,    MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_EXE_CLEAR,   MF_BYCOMMAND|MF_ENABLED);	  EnableMenuItem(hMenu,IDM_WIN_CLEAR,   MF_BYCOMMAND|MF_ENABLED);	  if (DeleteMenu(hMenu,IDM_EXE_HALT, MF_BYCOMMAND ))	    InsertMenu (hMenu, IDM_EXE_STEP, MF_BYCOMMAND, IDM_EXE_RUN, "&Run\tCtrl+R" );	  else if (DeleteMenu(hMenu,IDM_EXE_HALT_NOW, MF_BYCOMMAND ))	    InsertMenu (hMenu, IDM_EXE_STEP, MF_BYCOMMAND, IDM_EXE_RUN, "&Run\tCtrl+R" );	  DrawMenuBar (WinDialog.hWnd);	  StopWaitCursor ();       }       /*-----------------------------------+       | Update Browse Menu Items if needed |       +-----------------------------------*/       /*----------------+       | PASTE Menu Item |       +----------------*/       if ( IsClipboardFormatAvailable (CF_TEXT))	  EnableMenuItem(hMenu,IDM_EDIT_PASTE, MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_EDIT_PASTE, MF_BYCOMMAND|MF_GRAYED);       /*-----------------+       | AGENDA Menu Item |       +-----------------*/       if (GetNextActivation(NULL) != NULL )	  EnableMenuItem(hMenu,IDM_BROWSE_AGENDA,MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_AGENDA,MF_BYCOMMAND|MF_GRAYED);#if DEFGLOBAL_CONSTRUCT       /*------------------+       | DEFFACT Menu Item |       +------------------*/       if ( GetNextDefglobal (NULL) != NULL)	  EnableMenuItem(hMenu,IDM_BROWSE_GLOBAL,MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_GLOBAL,MF_BYCOMMAND|MF_GRAYED);#endif#if DEFFACTS_CONSTRUCT       /*------------------+       | DEFFACT Menu Item |       +------------------*/       if ( GetNextDeffacts (NULL) != NULL)	  EnableMenuItem(hMenu,IDM_BROWSE_FACTS,MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_FACTS,MF_BYCOMMAND|MF_GRAYED);#endif#if DEFRULE_CONSTRUCT       /*------------------+       | DEFRULE Menu Item |       +------------------*/       if (GetNextDefrule(NULL)!=NULL)	  EnableMenuItem(hMenu,IDM_BROWSE_RULE,MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_RULE,MF_BYCOMMAND|MF_GRAYED);#endif#if DEFTEMPLATE_CONSTRUCT       /*----------------------+       | DEFTEMPLATE Menu Item |       +----------------------*/       if (GetNextDeftemplate(NULL) != NULL)	  EnableMenuItem(hMenu,IDM_BROWSE_TEMPLATE, MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_TEMPLATE, MF_BYCOMMAND|MF_GRAYED);#endif#if DEFFUNCTION_CONSTRUCT       /*----------------------+       | DEFFUNCTION Menu Item |       +----------------------*/       if (GetNextDeffunction(NULL) != NULL)	  EnableMenuItem(hMenu,IDM_BROWSE_FUNCTION, MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_FUNCTION, MF_BYCOMMAND|MF_GRAYED);#endif#if DEFGENERIC_CONSTRUCT       /*---------------------+       | DEFGENERIC Menu Item |       +---------------------*/       if ( GetNextDefgeneric(NULL)!= NULL)	  EnableMenuItem(hMenu,IDM_BROWSE_GENERIC,  MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_GENERIC,  MF_BYCOMMAND|MF_GRAYED);#endif#if OBJECT_SYSTEM#if DEFINSTANCES_CONSTRUCT       /*----------------------+       | DEFINSTANCE Menu Item |       +----------------------*/       if (GetNextDefinstances (NULL) != NULL )	  EnableMenuItem(hMenu,IDM_BROWSE_INSTANCES,MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_INSTANCES,MF_BYCOMMAND|MF_GRAYED);#endif       /*-------------------+       | DEFCLASS Menu Item |       +-------------------*/       if ( GetNextDefclass(NULL) != NULL )	  EnableMenuItem(hMenu,IDM_BROWSE_CLASS,    MF_BYCOMMAND|MF_ENABLED);       else	  EnableMenuItem(hMenu,IDM_BROWSE_CLASS,    MF_BYCOMMAND|MF_GRAYED);#endif   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -