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

📄 w32g_i.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 5 页
字号:
				y++;				for(x=rc.right-2;x<=rc.right;x++)  					SetPixelV(Canvas.hmdc,x,y,colorFG);				y++;				for(x=rc.right-4;x<=rc.right;x++)		 			SetPixelV(Canvas.hmdc,x,y,colorFG);         }      }      }	 		InvalidateRect(hCanvasWnd,(RECT *)&(Canvas.rcMapSub),FALSE);			GDI_UNLOCK();   }   }	if(!Canvas.MapResidual && !flag)   	return;	change_flag = 0;#ifndef MAPBAR_LIKE_TMIDI	GDI_LOCK();	for(i=0;i<Canvas.MapCh;i++){		for(j=0;j<Canvas.MapBarMax;j++){			if(Canvas.MapMap[i][j]!=Canvas.MapMapOld[i][j] || flag){				int x,y;				COLORREF color = CanvasColor(Canvas.MapMap[i][j]);            rc.left = Canvas.rcMap.left + (Canvas.MapBarWidth + 1) * i;            rc.right = rc.left -1 + Canvas.MapBarWidth;            rc.top = Canvas.rcMap.top + (2 + 1) * j;            rc.bottom = rc.top -1 + 2;				for(x=rc.left;x<=rc.right;x++)					for(y=rc.top;y<=rc.bottom;y++)          			SetPixelV(Canvas.hmdc,x,y,color);				change_flag = 1;    		}   	}	}	GDI_UNLOCK();#else	GDI_LOCK();	if(Canvas.MapMode==CMAP_MODE_16){	for(i=0;i<Canvas.MapCh;i++){		for(j=0;j<Canvas.MapBarMax;j++){			if(Canvas.MapMap[i][j]!=Canvas.MapMapOld[i][j] || flag){				int x,y;				COLORREF color = CanvasColor(Canvas.MapMap[i][j]);				rc.left = Canvas.rcMap.left + (Canvas.MapBarWidth + 1) * i;				rc.right = rc.left -1 + Canvas.MapBarWidth;				rc.top = Canvas.rcMap.top + (2 + 1) * j;				rc.bottom = rc.top -1 + 2;					for(x=rc.left;x<=rc.right;x++){					for(y=rc.top;y<=rc.bottom;y++)          			SetPixelV(Canvas.hmdc,x,y,color);					}				change_flag = 1;    		}   		}	}	} else {	for(i=0;i<Canvas.MapCh;i++){		for(j=0;j<Canvas.MapBarMax;j++){			if(Canvas.MapMap[i][j]!=Canvas.MapMapOld[i][j] || flag){				int x,y;				COLORREF color = CanvasColor(Canvas.MapMap[i][j]);				if(i<=15){					rc.left = Canvas.rcMap.left + (Canvas.MapBarWidth + 1) * i;					rc.right = rc.left -1 + Canvas.MapBarWidth;						rc.top = -1 + Canvas.rcMap.top + (2 + 1) * j;					rc.bottom = rc.top -1 + 2;				} else {					rc.left = Canvas.rcMap.left + (Canvas.MapBarWidth + 1) * (i-16);					rc.right = rc.left -1 + Canvas.MapBarWidth;						rc.top = -1 + Canvas.rcMap.top + (2 + 1) * j + Canvas.MapBarMax*(2+1) + 2 ;					rc.bottom = rc.top -1 + 2;				}				for(x=rc.left;x<=rc.right;x++)					for(y=rc.top;y<=rc.bottom;y++)	          			SetPixelV(Canvas.hmdc,x,y,color);				change_flag = 1;    		}   		}	}	}	GDI_UNLOCK();#endif#ifdef CMAP_ALL_UPDATE	if(change_flag)		InvalidateRect(hCanvasWnd,NULL,FALSE);#else	if(change_flag)		InvalidateRect(hCanvasWnd,(RECT *)&(Canvas.rcMapMap),FALSE);#endif	if(Canvas.UpdateAll)		InvalidateRect(hCanvasWnd,NULL,FALSE);	if(Canvas.MapResidual<0)		Canvas.MapResidual = 0;}static void CanvasSleepClear(void){	RECT rc;	HPEN hPen;	HBRUSH hBrush;	HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush;	GDI_LOCK(); // gdi_lock	hPen = CreatePen(PS_SOLID,1,GetSysColor(COLOR_SCROLLBAR));	hBrush = CreateSolidBrush(GetSysColor(COLOR_SCROLLBAR));	hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen);	hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush);	GetClientRect(Canvas.hwnd, &rc);	Rectangle(Canvas.hmdc,rc.left,rc.top,rc.right,rc.bottom);	SelectObject(Canvas.hmdc, hgdiobj_hpen);	DeleteObject(hPen);	SelectObject(Canvas.hmdc, hgdiobj_hbrush);	DeleteObject(hBrush);	GDI_UNLOCK(); // gdi_lock	InvalidateRect(hCanvasWnd, NULL, FALSE);}static void CanvasSleepReset(void){	Canvas.PaintDone = 0;}static void CanvasSleepReadPanelInfo(int flag){}static int CanvasSleepDone = 0;static void CanvasSleepUpdate(int flag){	HDC hdc;	RECT rc;	int x,y;	CanvasSleepReset();	GDI_LOCK(); // gdi_lock   hdc = CreateCompatibleDC(Canvas.hmdc);	SelectObject(hdc,Canvas.hBitmapSleep);	GetClientRect(Canvas.hwnd, &rc);	x = (rc.right - rc.left - Canvas.rcSleep.right)/2;	y = (rc.bottom - rc.top - Canvas.rcSleep.bottom)/2;	if(x<0) x = 0;	if(y<0) y = 0;	BitBlt(Canvas.hmdc,x,y,Canvas.rcSleep.right,Canvas.rcSleep.bottom,hdc,0,0,SRCCOPY);	DeleteDC(hdc);	GDI_UNLOCK(); // gdi_lock}// Canvas GSLCDstatic void CanvasGSLCDReset(void){	int i, j;	for(i = 0; i < 16; i++) {		for(j = 0; j < 16; j++) {			Canvas.GSLCD[i][j] = 0;			Canvas.GSLCD_old[i][j] = 0;		}	}	Canvas.PaintDone = 0;}static void CanvasGSLCDReadPanelInfo(int flag){	int i, j;	if (!CanvasOK) {return;}	if (!PInfoOK) {return;}	if (Canvas.UpdateAll) {flag = 1;}	if (!Panel->changed && !flag) {return;}	for(i = 0; i < 16; i++) {		for(j = 0; j < 16; j++) {			Canvas.GSLCD_old[i][j] = Canvas.GSLCD[i][j];			Canvas.GSLCD[i][j] = Panel->GSLCD[i][j];		}	}}#define CGSLCD_BG RGB(0x00,0xf0,0x00)#define CGSLCD_ON RGB(0x00,0x00,0x00)#define CGSLCD_OFF RGB(0x00,0xc0,0x00)static void CanvasGSLCDUpdate(int flag){	int i, j, x, y, changed = 0;	COLORREF colorON = CGSLCD_ON, colorOFF = CGSLCD_OFF;	HPEN hPen;	HBRUSH hBrush;	HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush;	if(!PInfoOK) {return;}	if(Canvas.UpdateAll) {flag = 1;}	if(!Panel->changed && !flag) {return;}	GDI_LOCK(); // gdi_lock	for (i = 0; i < 16; i++) {		for (j = 0; j < 16; j++) {     		x = Canvas.rcGSLCD.left + i * 6;   			y = Canvas.rcGSLCD.top + j * 4;			if (flag || Canvas.GSLCD[i][j] != Canvas.GSLCD_old[i][j]) {				changed = 1;				if (Canvas.GSLCD[i][j] == 1) {					hPen = CreatePen(PS_SOLID, 1, colorON);					hBrush = CreateSolidBrush(colorON);				}				else {					hPen = CreatePen(PS_SOLID, 1, colorOFF);					hBrush = CreateSolidBrush(colorOFF);				}				hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen);				hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush);				Rectangle(Canvas.hmdc, x, y, x + 5, y + 3);				SelectObject(Canvas.hmdc, hgdiobj_hpen);				DeleteObject(hPen);				SelectObject(Canvas.hmdc, hgdiobj_hbrush);				DeleteObject(hBrush);			}		}	}	if (changed) {		GDI_UNLOCK();       	InvalidateRect(Canvas.hwnd, (RECT *)&Canvas.rcGSLCD, FALSE);		GDI_LOCK();	}	GDI_UNLOCK(); // gdi_lock	if(flag) {InvalidateRect(hCanvasWnd, NULL, FALSE);}}static void CanvasGSLCDClear(void){	HPEN hPen;	HBRUSH hBrush;	HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush;	COLORREF BGcolor;	if(!CanvasOK)   	return; 	GDI_LOCK(); // gdi_lock	BGcolor = RGB(0,0,0);	hPen = CreatePen(PS_SOLID,1,BGcolor);	hBrush = CreateSolidBrush(BGcolor);	hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen);	hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush);	Rectangle(Canvas.hmdc,   	Canvas.rcMe.left,Canvas.rcMe.top,Canvas.rcMe.right,Canvas.rcMe.bottom);	SelectObject(Canvas.hmdc, hgdiobj_hpen);	DeleteObject(hPen);	SelectObject(Canvas.hmdc, hgdiobj_hbrush);	DeleteObject(hBrush);	BGcolor = CGSLCD_BG;	hPen = CreatePen(PS_SOLID,1,BGcolor);	hBrush = CreateSolidBrush(BGcolor);	hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen);	hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush);	Rectangle(Canvas.hmdc,   	Canvas.rcMe.left + 1,Canvas.rcMe.top + 1,Canvas.rcMe.right - 1,Canvas.rcMe.bottom - 1);	SelectObject(Canvas.hmdc, hgdiobj_hpen);	DeleteObject(hPen);	SelectObject(Canvas.hmdc, hgdiobj_hbrush);	DeleteObject(hBrush);	GDI_UNLOCK(); // gdi_lock	CanvasGSLCDReset();	CanvasGSLCDReadPanelInfo(1);	CanvasGSLCDUpdate(1);	InvalidateRect(hCanvasWnd, NULL, FALSE);}// Canvas Keyboardstatic void CanvasKeyboardReset(void){	int i,j;	int ChFrom = (Canvas.CKPart - 1) * Canvas.CKCh;	int ChTo = Canvas.CKPart * Canvas.CKCh - 1;	for(i=ChFrom;i<=ChTo;i++){		for(j=0;j<4;j++){			Canvas.CKxnote[i][j] = 0;			Canvas.CKxnote_old[i][j] = 0;		}	}	Canvas.PaintDone = 0;}static void CanvasKeyboardReadPanelInfo(int flag){	int i,j;	int ChFrom, ChTo;	if(!CanvasOK)		return;	if(!PInfoOK)    	return;	ChFrom = (Canvas.CKPart - 1) * Canvas.CKCh;	ChTo = Canvas.CKPart * Canvas.CKCh - 1;   if(Canvas.UpdateAll)   	flag = 1;	if(!Panel->changed && !flag)   	return;	for(i=ChFrom;i<=ChTo;i++)		for(j=0;j<4;j++){      	Canvas.CKxnote_old[i][j] = Canvas.CKxnote[i][j];			Canvas.CKxnote[i][j] = Panel->xnote[i][j];      }}#define CK_KEY_BLACK	1#define CK_KEY_WHITE	2#define CK_ON RGB(0xff,0x00,0x00)#define CK_OFF_WHITE RGB(0xff,0xff,0xff)#define CK_OFF_BLACK RGB(0x00,0x00,0x00)#define CK_DOFF_WHITE RGB(0xcc,0xcc,0xcc)#define CK_DOFF_BLACK RGB(0x00,0x00,0x00)static void CanvasKeyboardUpdate(int flag){	int j,k,l;   int channel;	int ChFrom, ChTo;	if(!PInfoOK)		return;   if(Canvas.UpdateAll)   	flag = 1;	if(!COMPARE_CHANNELMASK(Canvas.DrumChannel,drumchannels))   	flag = 1;	if(!Panel->changed && !flag)   	return;	ChFrom = (Canvas.CKPart - 1) * Canvas.CKCh;	ChTo = Canvas.CKPart * Canvas.CKCh - 1;	GDI_LOCK(); // gdi_lock	for(channel=ChFrom;channel<=ChTo;channel++){		int change_flag = 0;		int drumflag = IS_SET_CHANNELMASK(drumchannels,channel);		COLORREF colorON, colorOFF_WHITE, colorOFF_BLACK;		if(drumflag){			colorON = CK_ON;         colorOFF_WHITE = CK_DOFF_WHITE;         colorOFF_BLACK = CK_OFF_BLACK;      } else {			colorON = CK_ON;         colorOFF_WHITE = CK_OFF_WHITE;         colorOFF_BLACK = CK_OFF_BLACK;      }		for(j=0;j<4;j++){			int32 xnote, xnote_diff;			xnote = Canvas.CKxnote[channel][j];        	xnote_diff = Canvas.CKxnote[channel][j] ^ Canvas.CKxnote_old[channel][j];			if(!flag && xnote_diff == 0)         	continue;			for(k=0;k<32;k++){				int key = 0;				int KeyOn = 0;  	   		int note = j*32+k;            int reff = (int32)1 << k;				int x,y;				if(note < Canvas.CKNoteFrom || note > Canvas.CKNoteTo)      			continue;            if(!flag && !(xnote_diff & reff))              	continue;            if(xnote & reff)					KeyOn = 1;				note = note % 12;            if(note == 1 || note == 3 || note == 6 || note == 8 || note == 10)			 		key = CK_KEY_BLACK;            else			 		key = CK_KEY_WHITE;     			x = Canvas.rcKeyboard.left + j * 32 + k - Canvas.CKNoteFrom;   			y = Canvas.rcKeyboard.top + (channel - ChFrom) * 4;				switch(key){            case CK_KEY_BLACK:	            if(KeyOn){						for(l=0;l<2;l++)      	  				SetPixelV(Canvas.hmdc,x,y+l,colorON);  						SetPixelV(Canvas.hmdc,x,y+2,colorOFF_WHITE);	            } else {						for(l=0;l<2;l++)      	  				SetPixelV(Canvas.hmdc,x,y+l,colorOFF_BLACK);  						SetPixelV(Canvas.hmdc,x,y+2,colorOFF_WHITE);         	   }					break;            case CK_KEY_WHITE:	            if(KeyOn){  						SetPixelV(Canvas.hmdc,x,y,colorOFF_WHITE);						for(l=1;l<3;l++)      	  				SetPixelV(Canvas.hmdc,x,y+l,colorON);	            } else {  						SetPixelV(Canvas.hmdc,x,y,colorOFF_WHITE);						for(l=1;l<3;l++)      	  				SetPixelV(Canvas.hmdc,x,y+l,colorOFF_WHITE);         	   }					break;				default:            	break;	  			}            change_flag = 1;      	}		}		if(change_flag){         RECT rc;			GDI_UNLOCK();			GetClientRect(Canvas.hwnd,&rc);         rc.top = Canvas.rcKeyboard.top + (channel - ChFrom) * 4;			rc.bottom = rc.top + 4;       	InvalidateRect(Canvas.hwnd, &rc, FALSE);			GDI_LOCK();		}	}	GDI_UNLOCK(); // gdi_lock	if(flag)		InvalidateRect(hCanvasWnd, NULL, FALSE);	Canvas.DrumChannel = drumchannels;}static void CanvasKeyboardClear(void){	int i;	HPEN hPen;	HBRUSH hBrush;	HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush;	COLORREF FGcolor, BGcolor;	HFONT hfont;   HGDIOBJ hgdiobj;	RECT rc;	char buffer[16];	if(!CanvasOK)   	return; 	GDI_LOCK(); // gdi_lock#if 0	hPen = CreatePen(PS_SOLID,1,CanvasColor(CC_BACK));	hBrush = CreateSolidBrush(CanvasColor(CC_BACK));#else	FGcolor = RGB(0xff,0xff,0xff);   BGcolor = RGB(0x00,0x00,0x00);	hPen = CreatePen(PS_SOLID,1,BGcolor);	hBrush = CreateSolidBrush(BGcolor);#endif	hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen);	hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush);	Rectangle(Canvas.hmdc,   	Canvas.rcMe.left,Canvas.rcMe.top,Canvas.rcMe.right,Canvas.rcMe.bottom);	SelectObject(Canvas.hmdc, hgdiobj_hpen);	DeleteObject(hPen);	SelectObject(Canvas.hmdc, hgdiobj_hbrush);	DeleteObject(hBrush);	hfont = CreateFont(7,7,0,0,FW_DONTCARE,FALSE,FALSE,FALSE,		DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,     	DEFAULT_PITCH | FF_DONTCARE,"Arial Bold");	hgdiobj = SelectObject(Canvas.hmdc,hfont);   SetTextAlign(Canvas.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP);	rc.left =	Canvas.rcMe.left+1 ;	rc.top =		Canvas.rcMe.bottom-7;	rc.right =	Canvas.rcMe.left+1 + 40;	rc.bottom =	Canvas.rcMe.bottom;	SetTextColor(Canvas.hmdc,RGB(0xff,0xff,0xff));	SetBkColor(Canvas.hmdc,RGB(0x00,0x00,0x00));	strcpy(buffer," "); 	ExtTextOut(Canvas.hmdc,rc.left,rc.top,ETO_CLIPPED|ETO_OPAQUE,&rc, 		buffer,strlen(buffer),NULL);	for(i=1;i<=3;i++){		if(i==Canvas.CKPart){   		SetTextColor(Canvas.hmdc,RGB(0xff,0xff,0xff));   		SetBkColor(Canvas.hmdc,RGB(0x00,0x00,0x00));      } else {   		SetTextColor(Canvas.hmdc,RGB(0x80,0x80,0x80));   		SetBkColor(Canvas.hmdc,RGB(0x00,0x00,0x00));		}		rc.left =	Canvas.rcMe.left+1 + 0 + (i-1)*24;		rc.top =		Canvas.rcMe.bottom-7;		rc.right =	Canvas.rcMe.left+1 + 0 + (i)*24 - 1;		rc.bottom =	Canvas.rcMe.bottom;		sprintf(buffer,"[%c]",i+'A'-1); 	 	ExtTextOut(Canvas.hmdc,rc.left,rc.top,ETO_CLIPPED|ETO_OPAQUE,&rc,   		buffer,strlen(buffer),NULL);	}   if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR)   	SelectObject(Canvas.hmdc,hgdiobj);	DeleteObject(hfont);	GDI_UNLOCK(); // gdi_lock	CanvasKeyboardReset();	CanvasKeyboardReadPanelInfo(1);	CanvasKeyboardUpdate(1);	InvalidateRect(hCanvasWnd, NULL, FALSE);}// Canvas Allstatic void CanvasPain

⌨️ 快捷键说明

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