// Add the Below Normal priority class
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, BELOW_NORMAL_PRIORITY_CLASS); }
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, IDLE_PRIORITY_CLASS);
ComboBox_SetCurSel(hwndCtl, nNormal);
// Initialize thread relative priorities
hwndCtl = GetDlgItem(hwnd, IDC_THREADRELATIVEPRIORITY);
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_TIME_CRITICAL);
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_HIGHEST);
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_ABOVE_NORMAL);
nNormal = n = ComboBox_AddString(hwndCtl, TEXT(\ ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_NORMAL);
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_BELOW_NORMAL);
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_LOWEST);
n = ComboBox_AddString(hwndCtl, TEXT(\
ComboBox_SetItemData(hwndCtl, n, THREAD_PRIORITY_IDLE);
ComboBox_SetCurSel(hwndCtl, nNormal);
Edit_LimitText(GetDlgItem(hwnd, IDC_SLEEPTIME), 4); // Maximum of 9999
return(TRUE); }
/////////////////////////////////////////////////////////////////////
//////////
void Dlg_OnCommand (HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) {
switch (id) { case IDCANCEL:
PostQuitMessage(0); break;
case IDC_PROCESSPRIORITYCLASS:
if (codeNotify == CBN_SELCHANGE) {
SetPriorityClass(GetCurrentProcess(), (DWORD) ComboBox_GetItemData(hwndCtl, ComboBox_GetCurSel(hwndCtl))); }
break;
case IDC_THREADRELATIVEPRIORITY:
if (codeNotify == CBN_SELCHANGE) {
SetThreadPriority(GetCurrentThread(), (DWORD) ComboBox_GetItemData(hwndCtl, ComboBox_GetCurSel(hwndCtl))); }
break;
case IDC_SUSPEND:
// To avoid deadlock, call EnableWindow before creating // the thread which calls SuspendThread. EnableWindow(hwndCtl, FALSE);
HANDLE hThreadPrimary;
DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), GetCurrentProcess(), &hThreadPrimary,
THREAD_SUSPEND_RESUME, FALSE, DUPLICATE_SAME_ACCESS); DWORD dwThreadID;
CloseHandle(chBEGINTHREADEX(NULL, 0, ThreadFunc, hThreadPrimary, 0, &dwThreadID)); break; } }
/////////////////////////////////////////////////////////////////////
//////////
INT_PTR WINAPI Dlg_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch (uMsg) {
chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog); chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand); }
return(FALSE); }
///////////////////////////////////////////////////////////////////////////////
int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {
HWND hwnd =
CreateDialog(hinstExe, MAKEINTRESOURCE(IDD_SCHEDLAB), NULL, Dlg_Proc);
BOOL fQuit = FALSE;
while (!fQuit) { MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
// IsDialogMessage allows keyboard navigation to work properly. if (!IsDialogMessage(hwnd, &msg)) {
if (msg.message == WM_QUIT) {
fQuit = TRUE; // For WM_QUIT, terminate the loop. } else {
// Not a WM_QUIT message. Translate it and dispatch it. TranslateMessage(&msg); DispatchMessage(&msg); }
} // if (!IsDialogMessage()) } else {
// Add a number to the listbox static int s_n = -1; TCHAR sz[20];
wsprintf(sz, TEXT(\
HWND hwndWork = GetDlgItem(hwnd, IDC_WORK);
ListBox_SetCurSel(hwndWork, ListBox_AddString(hwndWork, sz));
// Remove some strings if there are too many entries while (ListBox_GetCount(hwndWork) > 100) ListBox_DeleteString(hwndWork, 0);
// How long should the thread sleep
int nSleep = GetDlgItemInt(hwnd, IDC_SLEEPTIME, NULL, FALSE); if (chINRANGE(1, nSleep, 9999)) Sleep(nSleep); } }
DestroyWindow(hwnd); return(0); }
//////////////////////////////// End of File //////////////////////////////////
//Microsoft Developer Studio generated resource script. //
#include \
#define APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// //
// Generated from the TEXTINCLUDE 2 resource. //
#include \
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32
///////////////////////////////////////////////////////////////////////////// //
// Dialog //
IDD_SCHEDLAB DIALOGEX 0, 0, 209, 70
STYLE DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION |
WS_SYSMENU
EXSTYLE WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE CAPTION \FONT 8, \BEGIN
LTEXT \ COMBOBOX
IDC_PROCESSPRIORITYCLASS,84,4,72,80,CBS_DROPDOWNLIST | WS_TABSTOP
LTEXT \ COMBOBOX
IDC_THREADRELATIVEPRIORITY,84,18,72,76,CBS_DROPDOWNLIST | WS_TABSTOP
LTEXT \ EDITTEXT IDC_SLEEPTIME,84,34,32,14,ES_NUMBER PUSHBUTTON \
LISTBOX IDC_WORK,160,4,48,60,NOT LBS_NOTIFY |
LBS_NOINTEGRALHEIGHT | LBS_NOSEL | WS_TABSTOP END
///////////////////////////////////////////////////////////////////////////// //
// DESIGNINFO //
#ifdef APSTUDIO_INVOKED