static int LogProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2) { WINDOW cwnd = ControlWindow(&Log, ID_LOGLIST); char **mn = message; switch (msg) { case INITIATE_DIALOG: AddAttribute(cwnd, MULTILINE | VSCROLLBAR); while (*mn) { SendMessage(cwnd, ADDTEXT, (PARAM) (*mn), 0); mn++; } SendMessage(cwnd, SHOW_WINDOW, 0, 0); break; case COMMAND: if ((int) p1 == ID_OK) { int item; int tl = GetTextLines(cwnd); for (item = 0; item < tl; item++) if (ItemSelected(cwnd, item)) mn[item][0] = LISTSELECTOR; } break; default: break; } return DefaultWndProc(wnd, msg, p1, p2); }
int ReportDefragDone(void) { static int Initialized = FALSE; int control, i, result; if (!Initialized) { Initialize(); Initialized = TRUE; } SetStatusBar(RED, WHITE, " "); SetStatusBar(RED, WHITE, " Defragmentation done."); OpenWindow(&DoneDialog); do { control = ControlWindow(&DoneDialog); } while (control != OKBUTTON); CloseWindow(); for (i = 0; i < 3; i++) if (SelectButtons[i].selected) { result = i; SelectButtons[i].selected = FALSE; } SelectButtons[DEFAULT_OPTION].selected = TRUE; return result; }
int QueryUserStop(void) { int control, result; static int Initialized = FALSE; PushHelpIndex(USER_STOP_INDEX); if (!Initialized) { Initialize(); Initialized = TRUE; } SetStatusBar(RED, WHITE, " "); SetStatusBar(RED, WHITE, " Defragmentation process stopped."); OpenWindow(&QueryBox); control = ControlWindow(&QueryBox); CloseWindow(); /* Interpret values. */ if (control == YESBUTTON) result = TRUE; else result = FALSE; PopHelpIndex(); return result; }
int InputBoxProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2) { int rtn; switch (msg) { case CREATE_WINDOW: rtn = DefaultWndProc(wnd, msg, p1, p2); SendMessage(ControlWindow(&InputBoxDB,ID_INPUTTEXT), SETTEXTLENGTH, TextLength, 0); SendMessage(ControlWindow(&InputBoxDB,ID_INPUTTEXT), ADDTEXT, (PARAM) InputText, 0); return rtn; case COMMAND: if ((int) p1 == ID_OK && (int) p2 == 0) GetItemText(wnd, ID_INPUTTEXT, InputText, TextLength); break; default: break; } return DefaultWndProc(wnd, msg, p1, p2); }
char ShowDriveSelectionBox(void) { int control, i, len, index = 0; char drive; static int Initialized = FALSE; PushHelpIndex(SELECT_DRIVE_INDEX); if (!Initialized) { Initialized = TRUE; Initialize(); } drive = GetOptimizationDrive(); len = strlen(DrvBuffer); for (i = 0; i < len; i++) { if (drive == DrvBuffer[i]) { index = i; break; } } if (index) if (index - LBox.top < SELBOX_HEIGHT - 2) LBox.CursorPos = index - LBox.top; else { LBox.CursorPos = SELBOX_HEIGHT - 2; LBox.top = index - (SELBOX_HEIGHT - 2); } else { LBox.CursorPos = 0; LBox.top = 0; } OpenWindow(&DriveBox); control = ControlWindow(&DriveBox); CloseWindow(); PopHelpIndex(); if ((control == OKBUTTON) || (control == DRIVEBOX)) return DrvBuffer[LBox.top+LBox.CursorPos]; return 0; }
static int MessageBox(char* msg, int btncount, char** buttons, int forcolor, int backcolor, int btnforc, int btnbackc, int btnhighc, char* caption) { int slen, dwidth, btnarea, dialog_x, text_x, i, btn_x, result; /* Calculate dialog width. */ slen = strlen(msg); btnarea = ((btncount-1) * (BUTTON_LENGTH+2)) + BUTTON_LENGTH+1; dwidth = max(btnarea, slen) + 4; dialog_x = (MAX_X / 2) - (dwidth / 2); GenericMsgBxs.caption = caption; GenericMsgBxs.x = dialog_x; GenericMsgBxs.xlen = dwidth; GenericMsgBxs.SurfaceColor = backcolor; GenericMsgBxs.FrameColor = forcolor; GenericMsgBxs.AmofControls = btncount+1; /* Put the text in the dialog. */ text_x = (slen > btnarea) ? dialog_x + 2 : dialog_x + ((btnarea / 2) - (slen / 2)) + 2; Controls[0] = CreateLabel(msg, forcolor, backcolor, text_x, TEXT_Y); /* Put the buttons on the screen. */ btn_x = dialog_x + (dwidth / 2) - (btnarea / 2); for (i = 0; i < btncount; i++) { CmdButtons[i].caption = buttons[i]; CmdButtons[i].highcolor = btnhighc; Controls[i+1] = CreateCommandButton(&CmdButtons[i], btnforc, btnbackc, btn_x, BUTTON_Y, FALSE, FALSE, FALSE); btn_x += BUTTON_LENGTH + 2; } OpenWindow(&GenericMsgBxs); result = ControlWindow(&GenericMsgBxs); CloseWindow(); return result; }
int RecommendMethod(int fragmentation, char drive, char* recommendation) { char buffer[40]; char* drv = "?"; int posx, control; static int Initialized = FALSE; if (!Initialized) { Initialize(); Initialized = TRUE; } SetStatusBar(RED, WHITE, " "); SetStatusBar(RED, WHITE, " Recommending defragmentation method."); itoa(fragmentation, buffer, 10); strcat(buffer, "% of drive "); drv[0] = drive; strcat(buffer, drv); strcat(buffer, ": is not fragmented."); controls[3] = CreateLabel(buffer, DIALOGFORCOLOR, DIALOGBACKCOLOR, TEXT_X, DIALOG_Y+2); posx = (DIALOG_X_LEN / 2) - (strlen(recommendation) / 2) + DIALOG_X; controls[4] = CreateLabel(recommendation, BLUE, DIALOGBACKCOLOR, posx, DIALOG_Y+6); OpenWindow(&RecommendDialog); control = ControlWindow(&RecommendDialog); CloseWindow(); if (control == OPTIMIZEBUTTON) return TRUE; else return FALSE; }
/* * Process dialog box messages */ static int DlgFnOpen(WINDOW wnd,MESSAGE msg,PARAM p1,PARAM p2) { switch (msg) { case CREATE_WINDOW: { int rtn = DefaultWndProc(wnd, msg, p1, p2); DBOX *db = wnd->extension; WINDOW cwnd = ControlWindow(db, ID_FILENAME); SendMessage(cwnd, SETTEXTLENGTH, 64, 0); return rtn; } case INITIATE_DIALOG: InitDlgBox(wnd); break; case COMMAND: switch ((int) p1) { case ID_OK: { if ((int)p2 == 0) { char fn[MAXPATH+1]; char nm[MAXFILE]; char ext[MAXEXT]; GetItemText(wnd, ID_FILENAME, fn, MAXPATH); fnsplit(fn, NULL, NULL, nm, ext); strcpy(FileName, nm); strcat(FileName, ext); CreatePath(NULL, fn, FALSE, TRUE); if (IncompleteFilename(FileName)) { /* --- no file name yet --- */ DBOX *db = wnd->extension; WINDOW cwnd = ControlWindow(db, ID_FILENAME); strcpy(FileSpec, FileName); strcpy(SrchSpec, FileName); InitDlgBox(wnd); SendMessage(cwnd, SETFOCUS, TRUE, 0); return TRUE; } } break; } case ID_FILES: switch ((int) p2) { case ENTERFOCUS: case LB_SELECTION: /* selected a different filename */ GetDlgListText(wnd, FileName, ID_FILES); PutItemText(wnd, ID_FILENAME, FileName); break; case LB_CHOOSE: /* chose a file name */ GetDlgListText(wnd, FileName, ID_FILES); SendMessage(wnd, COMMAND, ID_OK, 0); break; default: break; } return TRUE; case ID_DIRECTORY: switch ((int) p2) { case ENTERFOCUS: PutItemText(wnd, ID_FILENAME, FileSpec); break; case LB_CHOOSE: { /* chose dir */ char dd[15]; GetDlgListText(wnd, dd, ID_DIRECTORY); chdir(dd); InitDlgBox(wnd); SendMessage(wnd, COMMAND, ID_OK, 0); break; } default: break; } return TRUE; case ID_DRIVE: switch ((int) p2) { case ENTERFOCUS: PutItemText(wnd, ID_FILENAME, FileSpec); break; case LB_CHOOSE: { /* chose dir */ char dr[15]; GetDlgListText(wnd, dr, ID_DRIVE); setdisk(*dr - 'A'); InitDlgBox(wnd); SendMessage(wnd, COMMAND, ID_OK, 0); } default: break; } return TRUE; default: break; } default: break; } return DefaultWndProc(wnd, msg, p1, p2); }