📄 w32g_syn.c
字号:
}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 + -