// Функция DlgProc_OnCommand
// -----------------------------------------------------
#pragma warning(disable: 4098)
void DlgProc_OnCommand(HWND hdlg, int id,
HWND hwndCtl, UINT codeNotify)
{
// Номер выбранной строки в списке типа COMBOBOX
LRESULT uSelectedItem;
switch (id)
{
// Когда пользователь нажимает клавишу OK,
// устанавливаем выбранную раскладку клавиатуры
// и завершаем работу диалоговой панели
case IDOK:
{
// Определяем номер выбранной в списке строки
uSelectedItem = SendMessage(
GetDlgItem(hdlg, IDC_COMBO1),
CB_GETCURSEL, 0, 0);
// Активизируем выбранную раскладку клавиатуры
ActivateKeyboardLayout(*(lpList + uSelectedItem), 0);
// Завершаем работу диалоговой панели
EndDialog(hdlg, 1);
return TRUE;
}
// Когда пользователь нажимает клавишу Set layout,
// устанавливаем выбранную раскладку клавиатуры,
// не завершая работы диалоговой панели
case IDC_BUTTON1:
{
uSelectedItem = SendMessage(
GetDlgItem(hdlg, IDC_COMBO1),
CB_GETCURSEL, 0, 0);
ActivateKeyboardLayout(*(lpList + uSelectedItem), 0);
return TRUE;
}
// Если пользователь нажал кнопку Cancel, отменяем
// смену расклдаки клавиатуры, завершая
// работу диалоговой панели
case IDCANCEL:
{
EndDialog(hdlg, 0);
return TRUE;
}
default:
break;
}
return FALSE;
}
Файл setlocal.h (листинг 4.2) содержит прототипы функций, определенных в приложении SETLOCAL.
Листинг 4.2. Файл setlocal\setlocal.h
// -----------------------------------------------------
// Описание функций
// -----------------------------------------------------
LRESULT WINAPI
WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
void WndProc_OnCommand(HWND hWnd, int id,
HWND hwndCtl, UINT codeNotify);
void WndProc_OnDestroy(HWND hWnd);