Описание (назначение) функций и структур
# |
Функции и структуры данных |
Назначение |
1. |
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow); |
Главная функция ПО. Создаёт новый процесс – приложение. Запускает функцию регистрации классов окон. Запускает функцию создания главного окна. Запускает цикл обработки сообщений главного окна – карусель, благодаря которой работает всё приложение. |
2. |
BOOL Register(HINSTANCE hInst); |
Регистрирует в базе данных ОС классы окон. |
3. |
HWND Create(HINSTANCE hInst, int nCmdShow); |
Создаёт главное окно. |
4. |
BOOL CALLBACK Dates252DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) |
Обрабатывает сообщения ON_HELP и ON_CLOSE: запоминает установленные параметры в структуру iniID. Осуществляется проверка не запущен ли вычислительный поток и если запущен, то выводит предупреждение.
|
5. |
BOOL Dlg252_OnInitDialog(HWND hwnd, HWND hwndEdit, LPARAM lParam); |
Производит инициализацию диалоговой панели. Устанавливает начальные значения и загружает необходимые ресурсы (изображения). |
6. |
BOOL Dlg252_OnHelp(HWND hwnd, LPARAM lParam); |
Действия выполняемые при вызове контекстной помощи на диалоговой панели. |
7. |
int Dlg252_OnCommand(HWND hwnd, WORD wParam, HWND hwndEdit, UINT codeNotify); |
Обработка возможных команд диалоговой панели. Таких как запуск и остановка вычислений, сброс параметров к начальным значениям и др. |
Фрагменты исходного кода
В этом разделе приводятся только некоторые фрагменты программного обеспечения (ПО). Полностью текст ПО воспроизводить нецелесообразно, так как он слишком большой и приводится в электронном виде.
BOOL CALLBACK Dates252DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ char s[32];
//////////////////////////////////////////////////////////////////////////////////////////////////////////
switch(uMsg)
{ chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg252_OnInitDialog);
chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg252_OnCommand);
case WM_HELP: { return(!Dlg252_OnHelp(hwnd,lParam)); }
case WM_CLOSE: { if(teploprovodnostparams.bContinue==FALSE)
{ GetWindowText(GetDlgItem(hwnd,ID_EDIT121),s,20); iniID.idtdx = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT122),s,20); iniID.idtdy =atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT123),s,20); iniID.idtdt = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT124),s,20); iniID.idtc = atof(s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
GetWindowText(GetDlgItem(hwnd,ID_EDIT127),s,20); iniID.idtx0 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT128),s,20); iniID.idty0 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT129),s,20); iniID.idtx1 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT130),s,20); iniID.idty1 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT131),s,20); iniID.idtx2 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT132),s,20); iniID.idty2 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT133),s,20); iniID.idtx3 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT134),s,20); iniID.idty3 = atof(s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
GetWindowText(GetDlgItem(hwnd,ID_EDIT135),s,20); iniID.idtt_start0 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT136),s,20); iniID.idtt_start1 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT137),s,20); iniID.idtt_start2 = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT138),s,20); iniID.idtt_start3 = atof(s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
GetWindowText(GetDlgItem(hwnd,ID_EDIT139),s,20); iniID.idt_up = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT140),s,20); iniID.idt_down = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT141),s,20); iniID.idt_left = atof(s);
GetWindowText(GetDlgItem(hwnd,ID_EDIT142),s,20); iniID.idt_right = atof(s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
iniID.idUseWinSystem=(int)SendMessage(GetDlgItem(hwnd,ID_SE_WIN_SYSTEM),BM_GETCHECK,0L,0L);
/////////////////////////////////////////////////////////////////////////////////////////////////////////
iniID.inComBox318=ComboBox_GetCurSel(GetDlgItem(hwnd,ID_COMBOBOX318)); MemModRastrTT=32*(iniID.inComBox318+1);
iniID.inComBox319=ComboBox_GetCurSel(GetDlgItem(hwnd,ID_COMBOBOX319));
iniID.inComBox320=ComboBox_GetCurSel(GetDlgItem(hwnd,ID_COMBOBOX320));
//////////////////////////////////////////////////////////////////////////////////////////////////////////
iniID.inComBox301=iniID.inComBox900=iniID.inComBox318; Synchronizatia_Mod_Lit_Scan();
//////////////////////////////////////////////////////////////////////////////////////////////////////////
iniID.idtLe = iniID.idtdx*(32*(iniID.inComBox318+1)); _gcvt(iniID.idtLe,4,s); SetWindowText(GetDlgItem(hwnd,ID_EDIT125),s);
=iniID.idtSe = iniID.idtLe*iniID.idtLe; _gcvt(iniID.idtSe,4,s); SetWindowText(GetDlgItem(hwnd,ID_EDIT126),s);
//////////////////////////////////////////////////////////////////////////////////////////////////////////
Schrodinger_Razmer_LF(); Schrodinger_Razmer_LR(); Schrodinger_Razmer_LT(); Schrodinger_Razmer_LB();
//////////////////////////////////////////////////////////////////////////////////////////////////////////
GetWindowRect(hMakeShape252,&iniID.WndwDlg252); iniID.iWndwDlg252=1; Zapis_Dannich_22(); hMakeShape252=0; EndDialog(hwnd,TRUE);
}
else if(teploprovodnostparams.bContinue==TRUE)
{ MessageBeep(MB_OK); MessageBox(NULL, "Работает поток решения Ур. Теплопроводности.\nВыход из диалога\n\nНЕ ВОЗМОЖЕН\n\nдо тех пор, пока работает этот поток.\n\nОстановите поток красной кнопкой 'STOP'.", "Проверка параметров. Информация", MB_OK | MB_TOPMOST | MB_ICONSTOP); }
MessageBeep(MB_OK); break;
}
}
return FALSE;
}