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

📄 sample7_2.c

📁 CVI教程,用于信号采集系统的多任务开发软件.学习简单,功能实用.
💻 C
字号:
#include <windows.h> #include <wingdi.h>  #include <userint.h>  #include <ansi_c.h>       #include "sample7_2.h"   #define MAXALL      10000#define MAXDEFAULT   80   int panelHandle;char defPrinter[MAXDEFAULT];char entryList[MAXALL];char filename[260]="";   int PlaceList(void);int GetPrinterList(void);int PrintFile(char fname[260]) ;   int main (int argc, char *argv[]){    if (InitCVIRTE (0, argv, 0) == 0)   /* Initialize CVI libraries */        return -1;  /* out of memory */    if ((panelHandle = LoadPanel (0, "sample7_2.uir", PANEL)) < 0)        return -1;    DisplayPanel (panelHandle);      GetPrinterList();    PlaceList();       RunUserInterface ();    return 0;}		 int GetPrinterList(void){    if (!GetProfileString ("windows", "Device", "",defPrinter, MAXDEFAULT))          return (-1);    if (!GetProfileString ("PrinterPorts", NULL, "",entryList, MAXALL))        return (-1);    return 0;}int PlaceList(void){    int     index;    char    *beg, *end, *currEntry;     char buffer[512];    beg = defPrinter;    while (*beg && *beg == ' ')                             beg++;    end = beg;    while (*end && *end != ',')                             end++;    *end = 0;                                      SetCtrlVal(panelHandle, PANEL_PRINTER, beg);    ClearListCtrl (panelHandle, PANEL_LISTBOX);    currEntry = entryList;    index = 1;    while (*currEntry)     {        InsertListItem (panelHandle, PANEL_LISTBOX, -1, currEntry, currEntry);        currEntry += strlen (currEntry) + 1;                index++;    }			      return 0;}int CVICALLBACK Quit (int panel, int control, int event,        void *callbackData, int eventData1, int eventData2){    switch (event) {        case EVENT_COMMIT:            QuitUserInterface (0);            break;    }    return 0;}int CVICALLBACK SelectFile (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	int ret;	char buf[260];	switch (event)	{		case EVENT_COMMIT:			ret = FileSelectPopup ("C:\\", "*.TXT", "*.*", "选择打印的文件",								   VAL_SELECT_BUTTON, 0, 0, 1, 0, buf);			if(ret==VAL_EXISTING_FILE_SELECTED)			{				strcpy(filename,buf);				SetCtrlVal (panelHandle, PANEL_PRINTFILE, filename); 			}			break;	}	return 0;}int CVICALLBACK Print (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	switch (event)	{		case EVENT_COMMIT:			if(strlen(filename)>0)				PrintFile(filename);			else 				MessagePopup("ERROR","No file selected");			break;	}	return 0;}int CVICALLBACK ListBox (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	switch (event)	{		case EVENT_COMMIT:			GetCtrlVal (panelHandle, PANEL_LISTBOX, defPrinter);			SetCtrlVal (panelHandle, PANEL_PRINTER,defPrinter ); 			break;	}	return 0;}void SetPrinterWin(HDC prn,int *LinesPerPage,int *CharHeight,int * orig_x,int *orig_y){	int height,width,CharWidth,pageHeight;	TEXTMETRIC textMetric;   	GetTextMetrics(prn,&textMetric);	*CharHeight=textMetric.tmHeight+textMetric.tmExternalLeading; 	CharWidth=textMetric.tmAveCharWidth+textMetric.tmOverhang; 	height=GetDeviceCaps(prn, VERTRES);	width=GetDeviceCaps(prn, HORZRES);	*orig_x=(width-CharWidth*40)/2;		   //40 chars per line	*orig_y=300;	pageHeight=220.0/GetDeviceCaps(prn, VERTSIZE)*height;	*LinesPerPage=pageHeight/(*CharHeight);	SetMapMode       (prn, MM_TEXT) ; }  int PrintFile(char fname[260]){   	int LinesPerPage,CharHeight,orig_x,orig_y,i=0;	FILE * fp; 	HDC prn;	int page;	char text[41];	DOCINFO docinfo;	docinfo.cbSize=sizeof(docinfo);	docinfo.lpszDocName="Mydoc";	docinfo.lpszOutput=NULL;	docinfo.lpszDatatype=NULL;	docinfo.fwType=0;		fp=fopen(fname,"r"); 		prn=CreateDC(NULL,(LPTSTR)defPrinter,NULL,NULL);  		if(prn!=NULL)	{		//set block for printint		SetPrinterWin(prn,&LinesPerPage,&CharHeight,&orig_x,&orig_y) ;		StartDoc(prn,&docinfo); 		page=0;		while(1)		{   			page++;			StartPage(prn);			for(i=0;i<LinesPerPage;i++)			{				if(fgets (text, 40, fp)==NULL)				{					sprintf(text,"第%d页",page);					TextOut(prn,orig_x,orig_y+CharHeight*(LinesPerPage+1),text,strlen(text));					EndPage(prn);					goto lp;	 				}				TextOut(prn,orig_x,orig_y+CharHeight*i,text,strlen(text));			}			sprintf(text,"第%d页",page);			TextOut(prn,orig_x,orig_y+CharHeight*(LinesPerPage+1),text,strlen(text));			EndPage(prn);		}lp:		EndDoc(prn);		fclose(fp);		DeleteDC(prn);		return 1;	}	else 		return 0;		}

⌨️ 快捷键说明

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