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

📄 w32g_subwin3.c

📁 linux上播放midi音乐,但是要一些设置.可网上查找. 软件名称: TiMidity++-2.13.0.tar
💻 C
📖 第 1 页 / 共 5 页
字号:
	switch (type) {	default:	case CVV_TYPE_LEFT:		rc1.left = rc1.right;		rc1.right = lprc->right;		break;	case CVV_TYPE_RIGHT:		rc1.left = lprc->left;		rc1.right = rc1.left;		break;	case CVV_TYPE_TOP:		rc1.top = rc1.bottom;		rc1.bottom = lprc->bottom;		break;	case CVV_TYPE_BOTTOM:		rc1.top = lprc->top;		rc1.bottom = rc1.top;		break;	}	if ( lockflag ) TRACER_LOCK ();	FillRect(hdc, &rc1, hBack);	if ( lockflag ) TRACER_UNLOCK ();	InvalidateRect ( w32g_tracer_wnd.hwnd, &rc1, FALSE );	DeleteObject ( (HGDIOBJ) hFore );	DeleteObject ( (HGDIOBJ) hBack );	return 0;}#endifstatic int string_view_border_draw ( RECT *lprc, COLORREF back, int lockflag){	HDC hdc;	HPEN hPen1 = NULL;	HPEN hPen2 = NULL;	HPEN hPen3 = NULL;	HPEN hPen4 = NULL;	HPEN hOldPen = NULL;	if ( !w32g_tracer_wnd.active )		return 0;	hdc = w32g_tracer_wnd.hmdc;	hPen1 = CreatePen(PS_SOLID, 1, RGB(GetRValue(back) + 32, GetGValue(back) + 32, GetBValue(back) + 32));	hPen2 = CreatePen(PS_SOLID, 1, RGB(GetRValue(back) - 16, GetGValue(back) - 16, GetBValue(back) - 16));	hPen3 = CreatePen(PS_SOLID, 1, RGB(GetRValue(back) + 16, GetGValue(back) + 16, GetBValue(back) + 16));	hPen4 = CreatePen(PS_SOLID, 1, RGB(GetRValue(back) - 32, GetGValue(back) - 32, GetBValue(back) - 32));	if ( lockflag ) TRACER_LOCK ();	hOldPen= (HPEN)SelectObject(hdc,GetStockObject(NULL_PEN));	// 忋慄	SelectObject(hdc, hPen1);	MoveToEx(hdc, lprc->left, lprc->top, NULL);	LineTo(hdc, lprc->right, lprc->top);	// 嵍慄	SelectObject(hdc, hPen3);	MoveToEx(hdc, lprc->left, lprc->top, NULL);	LineTo(hdc, lprc->left, lprc->bottom);	// 壓慄	SelectObject(hdc, hPen2);	MoveToEx(hdc, lprc->left, lprc->bottom - 1, NULL);	LineTo(hdc, lprc->right, lprc->bottom - 1);	// 塃慄	SelectObject(hdc, hPen4);	MoveToEx(hdc, lprc->right - 1, lprc->top, NULL);	LineTo(hdc, lprc->right - 1, lprc->bottom);	SelectObject(hdc, hOldPen);	if ( lockflag ) TRACER_UNLOCK ();	DeleteObject (hPen1);	DeleteObject (hPen2);	DeleteObject (hPen3);	DeleteObject (hPen4);	return 0;}static int cheap_string_view_draw_font ( RECT *lprc, char *str, COLORREF fore, COLORREF back, int mode, HFONT hFont, int lockflag ){	HDC hdc;	COLORREF old_fore, old_back;	HGDIOBJ hgdiobj;	UINT old_mode;	int left, top, bottom;	if ( !w32g_tracer_wnd.active )		return 0;	hdc = w32g_tracer_wnd.hmdc;	if ( lockflag ) TRACER_LOCK ();	if ( mode == CSV_CENTER ) {		old_mode = SetTextAlign(hdc, TA_CENTER | TA_BOTTOM );		left = ( lprc->left + lprc->right ) / 2;		top = lprc->top;		bottom = lprc->bottom;	} else if ( mode == CSV_LEFT ) {		old_mode = SetTextAlign(hdc, TA_LEFT | TA_BOTTOM );		left = lprc->left;		top = lprc->top;		bottom = lprc->bottom;	} else if ( mode == CSV_RIGHT ) {		old_mode = SetTextAlign(hdc, TA_RIGHT | TA_BOTTOM );		left = lprc->right;		top = lprc->top;		bottom = lprc->bottom;	}	old_fore = SetTextColor ( hdc, fore ); 	old_back = SetBkColor ( hdc, back ); 	hgdiobj = SelectObject( hdc, hFont );//	ExtTextOut ( hdc, left, top, ETO_CLIPPED | ETO_OPAQUE, lprc, str, strlen(str), NULL);	ExtTextOut ( hdc, left, bottom - 2, ETO_CLIPPED | ETO_OPAQUE, lprc, str, strlen(str), NULL);	SetTextColor ( hdc, old_fore ); 	SetBkColor ( hdc, old_back ); 	SelectObject( hdc, hgdiobj );	SetTextAlign(hdc, old_mode );	string_view_border_draw(lprc, back, FALSE);	if ( lockflag ) TRACER_UNLOCK ();	InvalidateRect ( w32g_tracer_wnd.hwnd, lprc, FALSE );	return 0;}static int cheap_string_view_draw ( RECT *lprc, char *str, COLORREF fore, COLORREF back, int mode, int lockflag ){	return cheap_string_view_draw_font ( lprc, str, fore, back, mode, w32g_tracer_wnd.hFontCommon, lockflag );}static int cheap_half_string_view_draw ( RECT *lprc, char *str, COLORREF fore, COLORREF back, int mode, int lockflag ){	HDC hdc;	COLORREF old_fore, old_back;	HGDIOBJ hgdiobj;	UINT old_mode;	HFONT hFont = w32g_tracer_wnd.hFontHalf;	int left, top;	if ( !w32g_tracer_wnd.active )		return 0;	hdc = w32g_tracer_wnd.hmdc;	if ( lockflag ) TRACER_LOCK ();	if ( mode == CSV_CENTER ) {		old_mode = SetTextAlign(hdc, TA_CENTER );		left = ( lprc->left + lprc->right ) / 2;		top = lprc->top;	} else if ( mode == CSV_LEFT ) {		old_mode = SetTextAlign(hdc, TA_LEFT );		left = lprc->left;		top = lprc->top;	} else if ( mode == CSV_RIGHT ) {		old_mode = SetTextAlign(hdc, TA_RIGHT );		left = lprc->right;		top = lprc->top;	}	old_fore = SetTextColor ( hdc, fore ); 	old_back = SetBkColor ( hdc, back ); 	hgdiobj = SelectObject( hdc, hFont );	ExtTextOut ( hdc, left, top-3, ETO_CLIPPED | ETO_OPAQUE, lprc, str, strlen(str), NULL);	SetTextColor ( hdc, old_fore ); 	SetBkColor ( hdc, old_back ); 	SelectObject( hdc, hgdiobj );	SetTextAlign(hdc, old_mode );	string_view_border_draw(lprc, back, FALSE);	if ( lockflag ) TRACER_UNLOCK ();	InvalidateRect ( w32g_tracer_wnd.hwnd, lprc, FALSE );	return 0;}void TracerWndPaintAll(int lockflag){	int i, j;	char buff[1024];	RECT rc;	if ( !w32g_tracer_wnd.active )		return;	if ( lockflag ) TRACER_LOCK();	// 僞僀僩儖	strcpy ( buff, "ch" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_channel_top );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "  instrument  " );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_instrument );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "  map  " );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_inst_map );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "bank" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_bank );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "prog" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_program );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "vel" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_velocity );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "vo" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_volume );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "ex" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_expression );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "pa" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_panning );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "su" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_sustain );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "pb" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_pitch_bend );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "mw" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_mod_wheel );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "ch" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_chorus_effect );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	strcpy ( buff, "re" );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_reverb_effect );	cheap_half_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );	get_head_rc(&rc, &w32g_tracer_wnd.rc_temper_keysig);	tracer_temper_keysig_draw(&rc, CTL_STATUS_UPDATE, CTL_STATUS_UPDATE, FALSE);	get_head_rc ( &rc, &w32g_tracer_wnd.rc_gm );	tracer_gm_draw ( &rc, w32g_tracer_wnd.play_system_mode == GM_SYSTEM_MODE ? 1 : 0, FALSE );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_gs );	tracer_gs_draw ( &rc, w32g_tracer_wnd.play_system_mode == GS_SYSTEM_MODE ? 1 : 0, FALSE );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_xg );	tracer_xg_draw ( &rc, w32g_tracer_wnd.play_system_mode == XG_SYSTEM_MODE ? 1 : 0, FALSE );	strcpy ( buff, w32g_tracer_wnd.titlename );	get_head_rc ( &rc, &w32g_tracer_wnd.rc_head_rest );	cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_LEFT, FALSE );	// 奺僠儍儞僱儖	for ( i = 0; i < TRACER_CHANNELS ; i ++ ) {		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_channel_top ) == 0 ) {			sprintf ( buff, "%02d", i + 1);			if ( IS_SET_CHANNELMASK ( w32g_tracer_wnd.quietchannels, i ) )				cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK_VERY_DARK, CSV_CENTER, FALSE );			else {				if ( IS_SET_CHANNELMASK ( w32g_tracer_wnd.channel_mute, i ) )					cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK_DARK, CSV_CENTER, FALSE );				else					cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, FALSE );			}		}		tracer_ch_program_draw ( i, w32g_tracer_wnd.bank[i], w32g_tracer_wnd.program[i], w32g_tracer_wnd.instrument[i], w32g_tracer_wnd.mapID[i], FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_velocity ) == 0 )			tracer_velocity_draw ( &rc, w32g_tracer_wnd.velocity[i], VEL_MAX, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_volume ) == 0 )			tracer_volume_draw ( &rc, w32g_tracer_wnd.volume[i], 128, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_expression ) == 0 )			tracer_expression_draw ( &rc, w32g_tracer_wnd.expression[i], 128, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_panning ) == 0 )			tracer_pan_draw ( &rc, w32g_tracer_wnd.panning[i], 128, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_sustain ) == 0 )			tracer_sustain_draw ( &rc, w32g_tracer_wnd.sustain[i], FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_pitch_bend ) == 0 )			tracer_pitch_bend_draw ( &rc, w32g_tracer_wnd.pitch_bend[i], 0x4000, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_mod_wheel ) == 0 )			tracer_mod_wheel_draw ( &rc, w32g_tracer_wnd.mod_wheel[i], 32, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_chorus_effect ) == 0 )			tracer_chorus_effect_draw ( &rc, w32g_tracer_wnd.chorus_effect[i], 128, FALSE );		if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_reverb_effect ) == 0 )			tracer_reverb_effect_draw ( &rc, w32g_tracer_wnd.reverb_effect[i], 128, FALSE );		if (! get_ch_rc(i, &rc, &w32g_tracer_wnd.rc_temper_type))			tracer_temper_type_draw(&rc, i, CTL_STATUS_UPDATE, FALSE);		for ( j = 0; j < 128; j ++ ) {			if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_notes ) == 0 )				notes_view_draw ( &rc, j, w32g_tracer_wnd.notes[i][j], TRUE, FALSE );		}	}	// ...	if ( lockflag ) TRACER_UNLOCK();	InvalidateRect( w32g_tracer_wnd.hwnd,NULL, FALSE );}// GUI 僗儗僢僪偐傜偺傒屇傋傞void TracerWndPaintDo(int flag){	RECT rc;	if ( !w32g_tracer_wnd.active )		return;	if ( flag ) InvalidateRect( w32g_tracer_wnd.hwnd,NULL, FALSE );	if ( GetUpdateRect(w32g_tracer_wnd.hwnd, &rc, FALSE) ) {		PAINTSTRUCT ps;		if ( GDI_LOCK_EX(0) == 0 ) {			TRACER_LOCK();			w32g_tracer_wnd.hdc = BeginPaint(w32g_tracer_wnd.hwnd, &ps);			BitBlt(w32g_tracer_wnd.hdc,rc.left,rc.top,rc.right,rc.bottom,w32g_tracer_wnd.hmdc,rc.left,rc.top,SRCCOPY);			EndPaint(w32g_tracer_wnd.hwnd, &ps);			GDI_UNLOCK();			TRACER_UNLOCK();		} else {			InvalidateRect ( w32g_tracer_wnd.hwnd, &rc, FALSE );		}	}}BOOL CALLBACKTracerCanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam){	switch (uMess)	{		case WM_CREATE:			break;		case WM_PAINT:	      	TracerWndPaintDo(FALSE);	    	return 0;		case WM_DROPFILES:			SendMessage(hMainWnd,WM_DROPFILES,wParam,lParam);			return 0;		case WM_RBUTTONDBLCLK:		case WM_LBUTTONDBLCLK:			{			int i, mode;			int xPos = LOWORD(lParam);			int yPos = HIWORD(lParam);			RECT rc;			int flag = FALSE;			get_head_rc ( &rc, &w32g_tracer_wnd.rc_channel_top );			if ( rc.left <= xPos && xPos <= rc.right && rc.top <= yPos && yPos <= rc.bottom ) {				char buff[64];				for ( i = 0; i < TRACER_CHANNELS; i ++ ) {					if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_channel_top ) == 0 ) {						sprintf ( buff, "%02d", i + 1 );						if ( uMess == WM_RBUTTONDBLCLK )							UNSET_CHANNELMASK ( channel_mute, i );						else							TOGGLE_CHANNELMASK ( channel_mute, i );						if ( IS_SET_CHANNELMASK ( quietchannels, i ) )							cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK_VERY_DARK, CSV_CENTER, TRUE );						else {							flag = TRUE;							if ( IS_SET_CHANNELMASK ( channel_mute, i ) )								cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK_DARK, CSV_CENTER, TRUE );							else								cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, TRUE );						}					}				}				if ( flag )					w32g_send_rc ( RC_SYNC_RESTART, 0 );				w32g_tracer_wnd.channel_mute = channel_mute;				w32g_tracer_wnd.quietchannels = quietchannels;				flag = TRUE;			}			if ( uMess == WM_RBUTTONDBLCLK )				break;			if ( flag )				break;			for ( i = 0; i < TRACER_CHANNELS; i ++ ) {				if ( get_ch_rc ( i, &rc, &w32g_tracer_wnd.rc_channel_top ) == 0 ) {					if ( rc.left <= xPos && xPos <= rc.right && rc.top <= yPos && yPos <= rc.bottom ) {						char buff[64];						sprintf ( buff, "%02d", i + 1 );						TOGGLE_CHANNELMASK ( channel_mute, i );						if ( IS_SET_CHANNELMASK ( quietchannels, i ) )							cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK_VERY_DARK, CSV_CENTER, TRUE );						else {							flag = TRUE;							if ( IS_SET_CHANNELMASK ( channel_mute, i ) )								cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK_DARK, CSV_CENTER, TRUE );							else								cheap_string_view_draw ( &rc, buff, C_TEXT_FORE, C_TEXT_BACK, CSV_CENTER, TRUE );						}						w32g_tracer_wn

⌨️ 快捷键说明

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