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

📄 w32g_syn.c

📁 MIDI解码程序(用VC编写)
💻 C
📖 第 1 页 / 共 4 页
字号:
}static LRESULT CALLBACKSynWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam){	static int have_popupmenu = 0;	switch (uMess) {	case WM_CREATE:		if ( AddTasktrayIcon(hwnd) == FALSE ) {			MessageBox ( NULL, "Fatal Error", "ERROR", MB_OK );			DestroyWindow ( hwnd );			PostQuitMessage ( 0 );			return -1;		}		start_syn_thread ();		break;	case WM_DESTROY:		{			int i;			terminate_syn_thread();			for ( i = 0; i < 4; i ++ ) {				if ( wait_for_termination_of_syn_thread() )					break;			}		}		DeleteTasktrayIcon(hwnd);	  PostQuitMessage ( 0 );	  break;	case MYWM_NOTIFYICON:	{		if ( (UINT)wParam == w32g_syn.nid_uID ) {	    if ( (UINT)lParam == WM_RBUTTONDOWN || (UINT)lParam == WM_LBUTTONDOWN) { 				int priority_flag[2][6];				POINT point;				HMENU hMenu, hMenuReset, hMenuChange, hMenuProcessPriority, hMenuSynPriority;				if ( have_popupmenu )					break;				have_popupmenu = 1;				// Process priority check				if ( processPriority == IDLE_PRIORITY_CLASS )					priority_flag[0][0] = MF_CHECKED;				else					priority_flag[0][0] = 0;								if ( processPriority == BELOW_NORMAL_PRIORITY_CLASS )					priority_flag[0][1] = MF_CHECKED;				else					priority_flag[0][1] = 0;				if ( processPriority == NORMAL_PRIORITY_CLASS )					priority_flag[0][2] = MF_CHECKED;				else					priority_flag[0][2] = 0;				if ( processPriority == ABOVE_NORMAL_PRIORITY_CLASS )					priority_flag[0][3] = MF_CHECKED;				else					priority_flag[0][3] = 0;				if ( processPriority == HIGH_PRIORITY_CLASS )					priority_flag[0][4] = MF_CHECKED;				else					priority_flag[0][4] = 0;				if ( processPriority == REALTIME_PRIORITY_CLASS )					priority_flag[0][5] = MF_CHECKED;				else					priority_flag[0][5] = 0;				// Thread priority check				if ( syn_ThreadPriority == THREAD_PRIORITY_LOWEST )					priority_flag[1][0] = MF_CHECKED;				else					priority_flag[1][0] = 0;				if ( syn_ThreadPriority == THREAD_PRIORITY_BELOW_NORMAL )					priority_flag[1][1] = MF_CHECKED;				else					priority_flag[1][1] = 0;								if ( syn_ThreadPriority == THREAD_PRIORITY_NORMAL )					priority_flag[1][2] = MF_CHECKED;				else					priority_flag[1][2] = 0;								if ( syn_ThreadPriority == THREAD_PRIORITY_ABOVE_NORMAL )					priority_flag[1][3] = MF_CHECKED;				else					priority_flag[1][3] = 0;								if ( syn_ThreadPriority == THREAD_PRIORITY_HIGHEST )					priority_flag[1][4] = MF_CHECKED;				else					priority_flag[1][4] = 0;								if ( syn_ThreadPriority == THREAD_PRIORITY_TIME_CRITICAL )					priority_flag[1][5] = MF_CHECKED;				else					priority_flag[1][5] = 0;				hMenu = CreatePopupMenu ();				hMenuReset = CreateMenu ();				hMenuChange = CreateMenu ();				hMenuProcessPriority = CreateMenu ();				hMenuSynPriority = CreateMenu ();				if (PlayerLanguage == LANGUAGE_JAPANESE) {					if ( w32g_syn_status == run ) {						AppendMenu ( hMenu, MF_STRING, IDM_STOP, "僔儞僙掆巭");					} else if ( w32g_syn_status == stop ) {						AppendMenu ( hMenu, MF_STRING, IDM_START, "僔儞僙奐巒");					} else if ( w32g_syn_status == quit ) { 						AppendMenu ( hMenu, MF_STRING | MF_GRAYED, IDM_START, "廔椆拞乧乧");					}					AppendMenu ( hMenu, MF_STRING, IDM_SYSTEM_RESET, "僔僗僥儉儕僙僢僩");					switch ( rtsyn_system_mode ) {					case GM_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING | MF_CHECKED, IDM_GM_SYSTEM_RESET, "GM 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING, IDM_GS_SYSTEM_RESET, "GS 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING, IDM_XG_SYSTEM_RESET, "XG 儕僙僢僩");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_GM_SYSTEM, "GM 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GS_SYSTEM, "GS 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_XG_SYSTEM, "XG 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_DEFAULT_SYSTEM, "僨僼僅儖僩偺僔僗僥儉傊曄峏");						break;					case GS_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING, IDM_GM_SYSTEM_RESET, "GM 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING | MF_CHECKED, IDM_GS_SYSTEM_RESET, "GS 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING, IDM_XG_SYSTEM_RESET, "XG 儕僙僢僩");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GM_SYSTEM, "GM 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_GS_SYSTEM, "GS 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_XG_SYSTEM, "XG 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_DEFAULT_SYSTEM, "僨僼僅儖僩偺僔僗僥儉傊曄峏");						break;					case XG_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING, IDM_GM_SYSTEM_RESET, "GM 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING, IDM_GS_SYSTEM_RESET, "GS 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING | MF_CHECKED, IDM_XG_SYSTEM_RESET, "XG 儕僙僢僩");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GM_SYSTEM, "GM 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GS_SYSTEM, "GS 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_XG_SYSTEM, "XG 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_DEFAULT_SYSTEM, "僨僼僅儖僩偺僔僗僥儉傊曄峏");						break;					default:					case DEFAULT_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING, IDM_GM_SYSTEM_RESET, "GM 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING, IDM_GS_SYSTEM_RESET, "GS 儕僙僢僩");						AppendMenu ( hMenuReset, MF_STRING, IDM_XG_SYSTEM_RESET, "XG 儕僙僢僩");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GM_SYSTEM, "GM 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GS_SYSTEM, "GS 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_XG_SYSTEM, "XG 僔僗僥儉傊曄峏");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_DEFAULT_SYSTEM, "僨僼僅儖僩偺僔僗僥儉傊曄峏");						break;					}					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][0], IDM_PROCESS_PRIORITY_LOWEST, "掅偄");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][1], IDM_PROCESS_PRIORITY_BELOW_NORMAL, "彮偟掅偄");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][2], IDM_PROCESS_PRIORITY_NORMAL, "晛捠");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][3], IDM_PROCESS_PRIORITY_ABOVE_NORMAL, "彮偟崅偄");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][4], IDM_PROCESS_PRIORITY_HIGHEST, "崅偄");					AppendMenu ( hMenuProcessPriority, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][5], IDM_PROCESS_PRIORITY_REALTIME, "儕傾儖僞僀儉");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][0], IDM_SYN_THREAD_PRIORITY_LOWEST, "掅偄");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][1], IDM_SYN_THREAD_PRIORITY_BELOW_NORMAL, "彮偟掅偄");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][2], IDM_SYN_THREAD_PRIORITY_NORMAL, "晛捠");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][3], IDM_SYN_THREAD_PRIORITY_ABOVE_NORMAL, "彮偟崅偄");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][4], IDM_SYN_THREAD_PRIORITY_HIGHEST, "崅偄");					AppendMenu ( hMenuSynPriority, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][5], IDM_SYN_THREAD_PRIORITY_TIMECRITICAL, "僞僀儉僋儕僥傿僇儖");					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuReset, "奺庬僔僗僥儉儕僙僢僩" );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuChange, "摿掕偺僔僗僥儉傊曄峏" );					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuProcessPriority, "僾儘僙僗僾儔僀僆儕僥傿愝掕" );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuSynPriority, "僔儞僙僗儗僢僪僾儔僀僆儕僥傿愝掕" );					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_STRING, IDM_PREFERENCE, "愝掕");					AppendMenu ( hMenu, MF_STRING, IDM_CONSOLE_WND, "僐儞僜乕儖");					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_STRING, IDM_VERSION, "僶乕僕儑儞忣曬");					AppendMenu ( hMenu, MF_STRING, IDM_TIMIDITY, "TiMidity++ 偵偮偄偰");					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_STRING, IDM_QUIT, "廔椆");				} else {					if ( w32g_syn_status == run ) {						AppendMenu ( hMenu, MF_STRING, IDM_STOP, "Stop synthesizer");					} else if ( w32g_syn_status == stop ) {						AppendMenu ( hMenu, MF_STRING, IDM_START, "Start synthesizer");					} else if ( w32g_syn_status == quit ) { 						AppendMenu ( hMenu, MF_STRING | MF_GRAYED, IDM_START, "Quitting...");					}					AppendMenu ( hMenu, MF_STRING, IDM_SYSTEM_RESET, "System Reset");					switch ( rtsyn_system_mode ) {					case GM_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING | MF_CHECKED, IDM_GM_SYSTEM_RESET, "GM Reset");						AppendMenu ( hMenuReset, MF_STRING, IDM_GS_SYSTEM_RESET, "GS Reset");						AppendMenu ( hMenuReset, MF_STRING, IDM_XG_SYSTEM_RESET, "XG Reset");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_GM_SYSTEM, "Change GM system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GS_SYSTEM, "Change GS system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_XG_SYSTEM, "Change XG system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_DEFAULT_SYSTEM, "Change default system");						break;					case GS_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING, IDM_GM_SYSTEM_RESET, "GM Reset");						AppendMenu ( hMenuReset, MF_STRING | MF_CHECKED, IDM_GS_SYSTEM_RESET, "GS Reset");						AppendMenu ( hMenuReset, MF_STRING, IDM_XG_SYSTEM_RESET, "XG Reset");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GM_SYSTEM, "Change GM system");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_GS_SYSTEM, "Change GS system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_XG_SYSTEM, "Change XG system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_DEFAULT_SYSTEM, "Change default system");						break;					case XG_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING, IDM_GM_SYSTEM_RESET, "GM Reset");						AppendMenu ( hMenuReset, MF_STRING, IDM_GS_SYSTEM_RESET, "GS Reset");						AppendMenu ( hMenuReset, MF_STRING | MF_CHECKED, IDM_XG_SYSTEM_RESET, "XG Reset");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GM_SYSTEM, "Change GM system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GS_SYSTEM, "Change GS system");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_XG_SYSTEM, "Change XG system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_DEFAULT_SYSTEM, "Change default system");						break;					default:					case DEFAULT_SYSTEM_MODE:						AppendMenu ( hMenuReset, MF_STRING, IDM_GM_SYSTEM_RESET, "GM Reset");						AppendMenu ( hMenuReset, MF_STRING, IDM_GS_SYSTEM_RESET, "GS Reset");						AppendMenu ( hMenuReset, MF_STRING, IDM_XG_SYSTEM_RESET, "XG Reset");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GM_SYSTEM, "Change GM system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_GS_SYSTEM, "Change GS system");						AppendMenu ( hMenuChange, MF_STRING, IDM_CHANGE_XG_SYSTEM, "Change XG system");						AppendMenu ( hMenuChange, MF_STRING | MF_CHECKED, IDM_CHANGE_DEFAULT_SYSTEM, "Change default system");						break;					}					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][0], IDM_PROCESS_PRIORITY_LOWEST, "lowest");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][1], IDM_PROCESS_PRIORITY_BELOW_NORMAL, "below normal");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][2], IDM_PROCESS_PRIORITY_NORMAL, "normal");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][3], IDM_PROCESS_PRIORITY_ABOVE_NORMAL, "above normal");					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][4], IDM_PROCESS_PRIORITY_HIGHEST, "highest");					AppendMenu ( hMenuProcessPriority, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenuProcessPriority, MF_STRING | priority_flag[0][5], IDM_PROCESS_PRIORITY_REALTIME, "realtime");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][0], IDM_SYN_THREAD_PRIORITY_LOWEST, "lowest");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][1], IDM_SYN_THREAD_PRIORITY_BELOW_NORMAL, "below normal");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][2], IDM_SYN_THREAD_PRIORITY_NORMAL, "normal");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][3], IDM_SYN_THREAD_PRIORITY_ABOVE_NORMAL, "above normal");					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][4], IDM_SYN_THREAD_PRIORITY_HIGHEST, "highest");					AppendMenu ( hMenuSynPriority, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenuSynPriority, MF_STRING | priority_flag[1][5], IDM_SYN_THREAD_PRIORITY_TIMECRITICAL, "time critical");					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuReset, "Specific system reset" );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuChange, "Change Specific system" );					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuProcessPriority, "Change process priority" );					AppendMenu ( hMenu, MF_POPUP, (UINT)hMenuSynPriority, "Change synthesizer thread priority" );					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_STRING, IDM_PREFERENCE, "Preference");					AppendMenu ( hMenu, MF_STRING, IDM_CONSOLE_WND, "Console");					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_STRING, IDM_VERSION, "Version Info");					AppendMenu ( hMenu, MF_STRING, IDM_TIMIDITY, "About TiMidity++");					AppendMenu ( hMenu, MF_SEPARATOR, 0, 0 );					AppendMenu ( hMenu, MF_STRING, IDM_QUIT, "Quit");				}				GetCursorPos ( &point );				// 億僢僾傾僢僾儊僯儏乕偑偒偪傫偲徚偊傞偨傔偺憖嶌丅 				// http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q135788& 嶲徠#if 0		// Win 98/2000 埲崀梡丠				{					DWORD dwThreadID = GetWindowThreadProcessId ( hwnd, NULL );					if ( dwThreadID != w32g_syn.gui_dwThreadId ) {						AttachThreadInput ( w32g_syn.gui_dwThreadId, dwThreadID, TRUE );						SetForegroundWindow ( hwnd );						AttachThreadInput ( w32g_syn.gui_dwThreadId, dwThreadID, FALSE );					} else {						SetForegroundWindow ( hwnd );					}				}#else	// 偙傟偱偄偄傜偟偄丠				SetForegroundWindow ( hwnd );#endif				TrackPopupMenu ( hMenu, TPM_TOPALIGN | TPM_LEFTALIGN,					point.x, point.y, 0, hwnd, NULL );				PostMessage ( hwnd, WM_NULL, 0, 0 );	// 偙傟傕億僢僾傾僢僾儊僯儏乕偺僥僋僯僢僋傜偟偄丅				DestroyMenu ( hMenu );				have_popupmenu = 0;				return 0;			}    } 	}		break;	case WM_COMMAND:		switch (LOWORD(wParam)) {		case IDM_QUIT:#if 1/* 嫮惂廔椆 */			SetTimer ( NULL, 0, 20000, forced_exit );#endif			w32g_message_set (W32G_SYN_QUIT);			break;		case IDM_START:			w32g_message_set (W32G_SYN_START);			break;		case IDM_STOP:			w32g_message_set (W32G_SYN_STOP);			break;		case IDM_SYSTEM_RESET:			w32g_message_set (W32G_SYN_SYSTEM_RESET);			break;		case IDM_GM_SYSTEM_RESET:			w32g_message_set (W32G_SYN_GM_SYSTEM_RESET);			break;		case IDM_GS_SYSTEM_RESET:			w32g_message_set (W32G_SYN_GS_SYSTEM_RESET);			break;		case IDM_XG_SYSTEM_RESET:			w32g_message_set (W32G_SYN_XG_SYSTEM_RESET);			break;		case	IDM_CHANGE_GM_SYSTEM:			w32g_message_set (W32G_SYN_CHANGE_GM_SYSTEM);			break;		case	IDM_CHANGE_GS_SYSTEM:			w32g_message_set (W32G_SYN_CHANGE_GS_SYSTEM);			break;		case IDM_CHANGE_XG_SYSTEM:			w32g_message_set (W32G_SYN_CHANGE_XG_SYSTEM);			break;		case IDM_CHANGE_DEFAULT_SYSTEM:			w32g_message_set (W32G_SYN_CHANGE_DEFAULT_SYSTEM);			break;		case IDM_PREFERENCE:			PrefWndCreate ( w32g_syn.nid_hWnd );			break;		case IDM_VERSION:			VersionWnd ( w32g_syn.nid_hWnd );			break;		case IDM_TIMIDITY:			TiMidityWnd ( w32g_syn.nid_hWnd );			break;		case IDM_PROCESS_PRIORITY_LOWEST:			processPriority = IDLE_PRIORITY_CLASS;			if ( w32g_syn_status == run ) {				SetPriorityClass(GetCurrentProcess(), processPriority);			}			break;		case IDM_PROCESS_PRIORITY_BELOW_NORMAL:			processPriority = BELOW_NORMAL_PRIORITY_CLASS;			if ( w32g_syn_status == run ) {				SetPriorityClass(GetCurrentProcess(), processPriority);			}			break;		case IDM_PROCESS_PRIORITY_NORMAL:			processPriority = NORMAL_PRIORITY_CLASS;			if ( w32g_syn_status == run ) {				SetPriorityClass(GetCurrentProcess(), processPriority);			}			break;		case IDM_PROCESS_PRIORITY_ABOVE_NORMAL:			processPriority = ABOVE_NORMAL_PRIORITY_CLASS;			if ( w32g_syn_status == run ) {				SetPriorityClass(GetCurrentProcess(), processPriority);			}			break;		case IDM_PROCESS_PRIORITY_HIGHEST:			processPriority = HIGH_PRIORITY_CLASS;			if ( w32g_syn_status == run ) {				SetPriorityClass(GetCurrentProcess(), processPriority);			}			break;		case IDM_PROCESS_PRIORITY_REALTIME:			processPriority = REALTIME_PRIORITY_CLASS;			if ( w32g_syn_status == run ) {				SetPriorityClass(GetCurrentProcess(), processPriority);			}			break;		case IDM_SYN_THREAD_PRIORITY_LOWEST:			syn_ThreadPriority = THREAD_PRIORITY_LOWEST;			if ( w32g_syn_status == run ) {				SetThreadPriority ( w32g_syn.syn_hThread, syn_ThreadPriority );			}			break;		case IDM_SYN_THREAD_PRIORITY_BELOW_NORMAL:			syn_ThreadPriority = THREAD_PRIORITY_BELOW_NORMAL;			if ( w32g_syn_status == run ) {				SetThreadPriority ( w32g_syn.syn_hThread, syn_ThreadPriority );			}			break;		case IDM_SYN_THREAD_PRIORITY_NORMAL:			syn_ThreadPriority = THREAD_PRIORITY_NORMAL;			if ( w32g_syn_status == run ) {				SetThreadPriority ( w32g_syn.syn_hThread, syn_ThreadPriority );			}			break;		case IDM_SYN_THREAD_PRIORITY_ABOVE_NORMAL:			syn_ThreadPriority = THREAD_PRIORITY_ABOVE_NORMAL;			if ( w32g_syn_status == run ) {				SetThreadPriority ( w32g_syn.syn_hThread, syn_ThreadPriority );			}			break;		case IDM_SYN_THREAD_PRIORITY_HIGHEST:			syn_ThreadPriority = THREAD_PRIORITY_HIGHEST;			if ( w32g_syn_status == run ) {				SetThreadPriority ( w32g_syn.syn_hThread, syn_ThreadPriority );			}			break;		case IDM_SYN_THREAD_PRIORITY_TIMECRITICAL:			syn_ThreadPriority = THREAD_PRIORITY_TIME_CRITICAL;			if ( w32g_syn_status == run ) {				SetThreadPriority ( w32g_syn.syn_hThread, syn_ThreadPriority );			}			break;#ifdef HAVE_SYN_CONSOLE		case IDM_CONSOLE_WND:			if ( hConsoleWnd == NULL ) {				InitConsoleWnd ( w32g_syn.nid_hWnd );			}			if ( IsWindowVisible ( hConsoleWnd ) )				ShowWindow ( hConsoleWnd, SW_HIDE );			else				ShowWindow ( hConsoleWnd, SW_SHOW );			break;#endif		default:			break;		}		break;	default:		if (uMess == RegisterWindowMessage("TaskbarCreated")) {			AddTasktrayIcon(hwnd);			return 0;		}	  return DefWindowProc ( hwnd, uMess, wParam, lParam );	}	return 0L;}static int volatile syn_thread_started = 0;static int start_syn_thread ( void ){	w32g_syn.syn_hThread = crt_beginthreadex ( NULL, 0,				    (LPTHREAD_START_ROUTINE) syn_thread,				    NULL, 0, & w32g_syn.syn_dwThreadId );	if ( w32g_syn.syn_hThread == NULL ) {		return -1;	}	for (;;) {		if ( syn_thread_started == 1 )			break;		if ( syn_thread_started == 2 )			return -1;		Sleep ( 200 );	}	if ( syn_thread_started == 2 )		return -1;	return 0;}static void WINAPI syn_thread ( void ){	syn_thread_started = 1;	win_main ( w32g_syn.argc, w32g_syn.argv );	syn_thread_started = 2;}static void terminate_syn_thread ( void ){	w32g_message_set ( W32G_SYN_QUIT );}static int wait_for_termination_of_syn_thread ( void ){	int i;

⌨️ 快捷键说明

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