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

📄 ide_misc.c

📁 NASA 开发使用的一个专家系统
💻 C
📖 第 1 页 / 共 2 页
字号:
	/*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */	/*                  A Product Of The                   */	/*             Software Technology Branch              */	/*             NASA - Johnson Space Center             */   /*                                                     */   /*               CLIPS Version 6.00  01/01/93          */   /*              IDE Text Editor 1.00  01/01/93         */   /*                                                     */   /*                     PRINT MODULE                    */	/*******************************************************//**************************************************************//* Purpose: Handle Dialogs, File I/O, and Printing.           *//*                                                            *//* Principal Programmer(s):                                   *//*      Christopher J. Ortiz                                  *//*                                                            *//* Contributing Programmer(s):                                *//*      Sample Code from Microsoft SDK                        *//*      Sample Code from Borland C++                          *//*                                                            *//* Revision History:                                          *//*                                                            *//**************************************************************/#include <windows.h>#include <commdlg.h>#include <io.h>#include <stdio.h>#include <string.h>#include <stdlib.h> // GDR#include "ide_ids.h"#include "ide_main.h"#include "ide_misc.h"#if ! WIN_32     #include <print.h>#endifPRINTDLG pd;BOOL     bAbort = NULL;HWND     hAbortDlgWnd = NULL;/******************************************************************* SaveFile: This saves the current contents of the Edit buffer*******************************************************************/BOOL SaveFile(hWnd)	HWND hWnd;{  extern HWND hEditWnd;	HANDLE hSaveCursor;	extern HANDLE hHourGlass;	// extern HANDLE hEditBuffer;	int text_length; // GDR	char *pEditBuffer;	BOOL bSuccess;	int IOStatus;	extern HFILE hFile; // GDR	extern OFSTRUCT OfStruct;	extern char szFileName[];	if ((hFile = OpenFile(szFileName, &OfStruct, OF_CANCEL | OF_CREATE)) < 0)	{  extern char szTemp[];		/*---------------------------+		| If the file can't be saved |		+---------------------------*/		sprintf(szTemp, "Cannot write to %s.", szFileName);		MessageBox(hWnd, szTemp, NULL, MB_OK | MB_ICONHAND);		return (FALSE);	}	// Begin GDR	// hEditBuffer = (HANDLE)SendMessage(hEditWnd, EM_GETHANDLE, 0, 0L);	// pEditBuffer = LocalLock(hEditBuffer);	text_length = SendMessage(hEditWnd,WM_GETTEXTLENGTH,0,0);	pEditBuffer = malloc(text_length+1);	if (pEditBuffer == NULL)	  {		extern char szTemp[];		sprintf(szTemp, "Not enough memory to save %s.", szFileName);		MessageBox(hWnd, szTemp, NULL, MB_OK | MB_ICONHAND);		_lclose(hFile);		return (FALSE);	  }	SendMessage(hEditWnd,WM_GETTEXT,text_length+1,					(LPARAM) pEditBuffer);	// End GDR	/*--------------------------------------------------------+	| Set the cursor to an hourglass during the file transfer |	+--------------------------------------------------------*/	hSaveCursor = SetCursor(hHourGlass);	// Begin GDR	IOStatus = _lwrite(hFile, pEditBuffer, strlen(pEditBuffer));	// close(hFile);	_lclose(hFile);	// End GDR	SetCursor(hSaveCursor);	if (IOStatus != (int) strlen(pEditBuffer))	{  extern char szTemp[];		sprintf(szTemp, "Error writing to %s.", szFileName);		MessageBox(hWnd, szTemp, NULL, MB_OK | MB_ICONHAND);		bSuccess = FALSE;	}	else	{  extern BOOL bChanges;		bSuccess = TRUE;                /* Indicates the file was saved      */		bChanges = FALSE;               /* Indicates changes have been saved */      SendMessage(hEditWnd,EM_SETMODIFY,                  (WPARAM) (UINT) FALSE, (LPARAM) 0); 	}	// Begin GDR	// LocalUnlock(hEditBuffer);	free(pEditBuffer);	// End GDR	return (bSuccess);}/******************************************************************* QuerySaveFile: Called when some action might lose current contents*******************************************************************/BOOL QuerySaveFile(hWnd,cancel)  HWND hWnd;  short *cancel;  {   int Response;   extern BOOL bChanges;   *cancel = FALSE;   if (bChanges)	  {      extern char szTemp[];      extern char szFileName[];		sprintf(szTemp, "Save current changes: %s", szFileName);      Response = MessageBox(hWnd, szTemp, "EditFile",  MB_YESNOCANCEL | MB_ICONEXCLAMATION);      if (Response == IDYES)        {         /*-----------------------------------------+	      | Make sure there is a filename to save to |	      +-----------------------------------------*/	      while (!szFileName[0])	        {            extern OPENFILENAME ofn;	         if (! GetSaveFileName ((LPOPENFILENAME)&ofn))			     { return FALSE; }           }			SaveFile(hWnd);        }      else if (Response == IDCANCEL)        {         *cancel = TRUE;         return (FALSE);        }     }   return ( TRUE );  }/******************************************************************* SetNewBuffer: Set new buffer for edit window*******************************************************************/void SetNewBuffer(hWnd, Title)	HWND hWnd;	// HANDLE hNewBuffer;	char *Title;{  extern HWND hEditWnd;	extern BOOL bChanges;	// HANDLE hOldBuffer;	// hOldBuffer = (HANDLE)SendMessage(hEditWnd, EM_GETHANDLE, 0, 0L);	// LocalFree(hOldBuffer);	/*----------------------------------+	| Allocates a buffer if none exists |	+----------------------------------*/	// if (!hNewBuffer)	//	hNewBuffer = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT, 1);	/*-------------------------------------------+	| Updates the buffer and displays new buffer |	+-------------------------------------------*/	// SendMessage(hEditWnd, EM_SETHANDLE, hNewBuffer, 0L);	//SendMessage(hEditWnd, EM_SETHANDLE,	//				(WPARAM) hNewBuffer, 0L); // GDR	SetWindowText(hWnd, Title);	SetFocus(hEditWnd);	bChanges = FALSE;}/******************************************************************* GetPrinterDC: Get hDc for current device on current output port*   according to info in WIN.INI.*******************************************************************/HDC GetPrinterDC(void){  HDC         hDC;	LPDEVMODE   lpDevMode = NULL;	LPDEVNAMES  lpDevNames;   LPSTR       lpszDriverName;   LPSTR       lpszDeviceName;   LPSTR       lpszPortName;   if (!PrintDlg((LPPRINTDLG)&pd))      return(NULL);   if (pd.hDC)   {  hDC = pd.hDC;	}	else   {  if (!pd.hDevNames)         return(NULL);      lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames);      lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset;      lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset;      lpszPortName   = (LPSTR)lpDevNames + lpDevNames->wOutputOffset;      GlobalUnlock(pd.hDevNames);		if (pd.hDevMode)        lpDevMode = (LPDEVMODE)GlobalLock(pd.hDevMode);		hDC = CreateDC(lpszDriverName, lpszDeviceName,		               lpszPortName, lpDevMode);      if (pd.hDevMode && lpDevMode)        GlobalUnlock(pd.hDevMode);   }   if (pd.hDevNames)   {  GlobalFree(pd.hDevNames);		pd.hDevNames=NULL;   }   if (pd.hDevMode)   {  GlobalFree(pd.hDevMode);      pd.hDevMode=NULL;   }   return(hDC);}

⌨️ 快捷键说明

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