3.3 Ресурсы
В программе разработаны и используются следующие ресурсы:
Кнопки панели инструментов (рисунок 4). Имеет идентификатор IDB_BITMAP3.
Рисунок 4 – Панель инструментов
Диалоговая панель «О программе». Имеет идентификатор IDD_ABOUT. Вызывается при выборе пункта меню «Справка/О программа». Обработка вызова происходит в сообщении WM_COMMAND:
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDC_HELP_ABOUT:
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUT), hwnd, (DLGPROC)DlgAbout) ;
break ;
}
}
break ;
}
В оконной функции диалоговой панели DlgAbout() обрабатывается одно сообщение WM_LBUTTONDOWN. Оно возникает при щелчке левой клавишей мыши внутри рабочей области окна и приводит к его закрытию. Программный код оконной функции представлен ниже.
INT_PTR DlgAbout(HWND hDlgWnd,UINT DlgMessage,WPARAM wParam,LPARAM lParam)
{
switch (DlgMessage)
{
case WM_LBUTTONDOWN:
{
EndDialog(hDlgWnd, true) ;
return true ;
}
}
return false ;
}
Рисунок 5 – Диалоговое окно «О программе»
Диалоговая панель «Скорость» (рисунок 6). Имеет идентификатор IDD_DIALOG1. Вызывается при выборе пункта меню «Рисование/Скорость». Обработка вызова происходит в сообщении WM_COMMAND:
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDC_HELP_ABOUT:
{
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, (DLGPROC)DlgSpeed) ;
break ;
}
}
break ;
}
Здесь также следует описать оконную функцию данного диалогового окна.
Рисунок 6 – Диалоговая панель «Скорость»
Иконка для программы (рисунок 7). Имеет идентификатор IDI_ICON1.
Рисунок 7 – Программная иконка
Клавиши-акселераторы. Акселераторы создаются в сообщении WM_CREATE, путем вызова пользовательской функции CreateAcceleratorsTable(). Код функции представлен ниже.
HACCEL CreateAcceleratorsTable()
{
ACCEL Accelerators[14];
Accelerators[0].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[0].key = '1' ;
Accelerators[0].cmd = IDC_PARAM_THICK_A ;
Accelerators[1].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[1].key = '2' ;
Accelerators[1].cmd = IDC_PARAM_THICK_B ;
Accelerators[2].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[2].key = '3' ;
Accelerators[2].cmd = IDC_PARAM_THICK_C ;
Accelerators[3].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[3].key = '4' ;
Accelerators[3].cmd = IDC_PARAM_THICK_D ;
Accelerators[4].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[4].key = 'Q' ;
Accelerators[4].cmd = IDC_PARAM_GRADE_A ;
Accelerators[5].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[5].key = 'W' ;
Accelerators[5].cmd = IDC_PARAM_GRADE_B ;
Accelerators[6].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[6].key = 'E' ;
Accelerators[6].cmd = IDC_PARAM_GRADE_C ;
Accelerators[7].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[7].key = 'R' ;
Accelerators[7].cmd = IDC_PARAM_GRADE_D ;
Accelerators[8].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[8].key = 'T' ;
Accelerators[8].cmd = IDC_PARAM_GRADE_E ;
Accelerators[9].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[9].key = 'C' ;
Accelerators[9].cmd = IDC_PARAM_COLOR ;
Accelerators[10].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[10].key = 'I' ;
Accelerators[10].cmd = IDC_DRAW_A ;
Accelerators[11].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[11].key = 'O' ;
Accelerators[11].cmd = IDC_DRAW_B ;
Accelerators[12].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[12].key = 'A' ;
Accelerators[12].cmd = IDC_DRAW_ANIMATE;
Accelerators[13].fVirt = FCONTROL | FVIRTKEY ;
Accelerators[13].key = 'X' ;
Accelerators[13].cmd = IDC_CAP_EXIT ;
return CreateAcceleratorTable(Accelerators,14) ;
}
Как видно из кода создаются 14 клавиш-акселераторов. Все они работают в сочетании в с клавишей CTRL. Для задания клавиш используется их виртуальный код, о чем говорит константа FVIRTKEY. Каждая клавиша связана с пунктом меню, чей идентификатор указан в поле cmd.