|
}
//////////////////////////////////////////////////////////////////
void Dlg_OnDestroy (HWND hwnd) {
// Когда диалоговое окно закрывается, завершаем оба потока и удаляем критический
// раздел
TerminateThread(g_hThreadDspy, 0);
TerminateThread(g_hThreadCntr, 0);
DeleteCriticalSection(&g_CriticalSection);
}
///////////////////////////////////////////////////////////////////
Void Dlg_OnCommand (HWND hwnd, int id, HWND hwndCtl,
UINT codeNotify) {
HANDLE hThread;
DWORD dw;
switch (id) {
case IDCANCEL:
EndDialog(hwnd, id);
Break;
case IDC_DSPYTHRDPRIORITY:
case IDC_CNTRTHRDPRIORITY:
if (codeNotify!= CBN_SELCHANGE)
Break;
switch (ComboBox_GetCurSel(hwndCtl)) {
case 0:
dw = (DWORD) THREAD_PRIORITY_IDLE;
Break;
case 1:
dw = (DWORD) THREAD_PRIORITY_LOWEST;
Break;
case 2:
dw = (DWORD) THREAD_PRIORITY_BELOW_NORMAL;
Break;
case 3:
default:
dw = (DWORD) THREAD_PRIORITY_NORMAL;
Break;
case 4:
dw = (DWORD) THREAD_PRIORITY_ABOVE_NORMAL;
Break;
case 5:
dw = (DWORD) THREAD_PRIORITY_HIGHEST;
Break;
case 6:
dw = (DWORD) THREAD_PRIORITY_TIME_CRITICAL;
Break;
}
// Пользователь меняет относительный приоритет одного из потоков
hThread = (id == IDC_CNTRTHRDPRIORITY)?
g_hThreadCntr: g_hThreadDspy;
SetThreadPriority(hThread, dw);
Break;
case IDC_PAUSE:
// Пользователь приостанавливает или возобновляет оба потока
if (Button_GetCheck(hwndCtl)) {
SuspendThread(g_hThreadCntr);
SuspendThread(g_hThreadDspy);
} else {
ResumeThread(g_hThreadCntr);
ResumeThread(g_hThreadDspy);
}
Break;
}
/////////////////////////////////////////////////////////////////////
Дата добавления: 2015-07-11; просмотров: 52 | Нарушение авторских прав