void main() { Color(WHITE,BLUE); clrscr(); Recta(10,10,48,20); Recta(2,2,10,9); Recta(1,1,49,24); //While specifying the options, keep each option's no. of char same char Menu[][15]={"Admin ", "search", "Report", "Quit "}; char SMenu[][15]={"Add New ", "Modify Class ", "Modify Section", "Modify P Info ", "Modify Stream ", "Quit "}; int Quit=0; do { clrscr(); //Display Main Menu1 int N=HMenu(1,1,Menu,4),SN; switch (N) { case 0://Displaying Vertical Popup menu SN=VMenu(1,2,SMenu,6); switch(SN) { case 0://Call the Function for SubOption1 DispCh(30,10,"SubOption 1");break; case 1:DispCh(30,10,"SubOption 2");break; case 2:DispCh(30,10,"SubOption 3");break; } getch(); break; case 1:DispCh(30,10,"Option 2");break; case 2:DispCh(30,10,"Option 3");break; case 3:DispCh(30,10,"Thank u"); Quit=1; } } while (!Quit); getch(); }
int VMenu(int C,int R,char Men[][15],int Noo) { Color(YELLOW,BLUE); Recta(C,R,C+strlen(Men[0])+1,R+Noo+1);//Drawing a rectangle enclosing options for (int i=0;i<Noo;i++) DispCh(C+1,R+i+1,Men[i]); //Displaying All options int Exit=0,Sel=0; do { int Tsel=Sel; Color(BLUE,YELLOW); //Changing color for highlighting DispCh(C+1,R+Sel+1,Men[Sel]);//Redisplaying the selected option with changed color Color(YELLOW,BLUE); //Changing color to normal char Ch=getch(); //Accepting option from user switch(Ch) { case 71:Sel=0;break; //Home -> Move to first option case 79:Sel=Noo-1;break; //End -> Move to Last option case 72:if (Sel==0) //Up -> Checking if already on top Sel=Noo-1; // Move to the last option else // Sel--; // Move one option up break; case 80:if (Sel==Noo-1) //Down -> Checking if already at bottom Sel=0; // Move to the first option else // Sel++; // Move one step down break; case 27:Sel=-1; //Escape-> Getting out of the Menu without valid selection case 13:Exit=1; //Enter-> Getting out of the Menu with current selection } DispCh(C+1,R+Tsel+1,Men[Tsel]);//Redisplaying the non-highlighted option } while (!Exit); return Sel; //Returning the selected value from menu }
void ControlOscyloscope::PintarOscy(HDC hDC, RECT *Espacio) { DWL::GDI::DWLRecta Recta(0, 0, ANCHO_OSCY_PINTABLE, ALTO_OSCY_PINTABLE); // RECT RO = { 0, 0, ANCHO_OSCY_PINTABLE, ALTO_OSCY_PINTABLE }; static DWL::GDI::DWLhDC Buffer(hDC, ANCHO_OSCY_PINTABLE, ALTO_OSCY_PINTABLE); int Medida = (4 - static_cast<int>(Sistema.App.Config.TipoOscy)); float *Resultado = NULL; size_t Contador; int XF = 0; // HBRUSH Brocha = CreateSolidBrush(DWL::SO::DWLEstilos::Colores.ContenedorEx_Fondo_Normal); // FillRect(Buffer.hDC(), Recta(), Brocha); // DeleteObject(Brocha); static float ArraySpectrum[512]; RECT FondoOscy = { 0, -21, ANCHO_OSCY_PINTABLE, VENTANAEX_ALTURA_PARTE_SUPERIOR -21 }; if (Sistema.App.Config.UtilizarBarraTituloWindows == true) { FondoOscy.top = 0; FondoOscy.bottom = VENTANAEX_ALTURA_PARTE_SUPERIOR - 23; } Buffer.PintaGradient(DWL::SO::DWLEstilos::Colores.VentanaEx_Fondo_DegradadoSuperior, DWL::SO::DWLEstilos::Colores.VentanaEx_Fondo_DegradadoInferior, &FondoOscy, false); #if defined UTILIZAR_FMOD Resultado = Sistema.App.FMod.PillaSpectrum(512, ArraySpectrum); #endif if (Resultado == NULL) { // Si no esta sonando una cancion inicio los parametros a 0 Resultado = ArraySpectrum; for (Contador = 0; Contador < NUM_BARRITAS; Contador ++) { Resultado[Contador] = 0.0f; } } /*else { Buffer.Fuente(&Sistema.App.Tahoma13b); switch (EstadoTexto) { case 0 : Buffer.PintarTexto(Sistema.App.FMod.CancionActual()->Cancion()->Nombre(), 0, 0, (Espacio->right - Espacio->left) - ANCHO_TIEMPO, 18, Sistema.App.Skin.Ventana_TextoNormal, true); break; case 1 : Buffer.PintarTexto(Sistema.App.FMod.CancionActual()->Cancion()->Nombre(), 0, 0, (Espacio->right - Espacio->left) - ANCHO_TIEMPO, 18, Sistema.App.Skin.Ventana_TextoResaltado, true); break; case 2 : Buffer.PintarTexto(Sistema.App.FMod.CancionActual()->Cancion()->Nombre(), 1, 1, (Espacio->right - Espacio->left) - ANCHO_TIEMPO, 18, Sistema.App.Skin.Ventana_TextoPresionado, true); break; } if (Sistema.App.SliderTiempo.Estado() == BarraEx_Enum_Estados_Presionado) Buffer.PintarTexto(Sistema.App.FMod.TiempoStr(Sistema.App.SliderTiempo.Valor()), ANCHO_OSCY_PINTABLE - ANCHO_TIEMPO, 0, Sistema.App.Skin.Ventana_TextoNormal, false); else Buffer.PintarTexto(Sistema.App.FMod.TiempoStr(Sistema.App.FMod.TiempoActual()), ANCHO_OSCY_PINTABLE - ANCHO_TIEMPO, 0, Sistema.App.Skin.Ventana_TextoNormal, false); }*/ // Pinto barritas static DWL::GDI::DWLBrocha Negro(DWL_Enum_BrochasStock_Negra); for (Contador = 0; Contador < NUM_BARRITAS; Contador ++) { XF = static_cast<int>(MAXMEDIDA - (Resultado[Contador] * MULTIPLICADOR_OSCY)); // XF = static_cast<int>(MAXMEDIDA - (Resultado[Contador] * (MULTIPLICADOR_OSCY + (Contador * 3) ))); if (LineasOscy[Contador] >= XF - 3) { LineasOscy[Contador] = XF - 3; if (-3 > LineasOscy[Contador]) LineasOscy[Contador] = -3; } else { LineasOscy[Contador] ++; } // if (XF > 40) XF = 40; if (XF < 0) XF = 0; Sistema.App.Barrita.PintarMapaBits(Buffer.hDC(), (Contador * Medida) + 1, XF + Y_ORIGEN, ((Contador + 1) * Medida), MAXMEDIDA, static_cast<int>(Sistema.App.Config.TipoOscy), XF); Recta.Asignar((Contador * Medida) + 1, Y_ORIGEN + LineasOscy[Contador], ((Contador + 1) * Medida), Y_ORIGEN + LineasOscy[Contador] + 1); Buffer.PintarRecta(&Recta, &Negro); // Pinto Lineas } //RECT RC; //GetClientRect(_hWnd, &RC); Buffer.PintarMapaBits(hDC, (Espacio->right - ANCHO_OSCY_PINTABLE) / 2, 0, ANCHO_OSCY_PINTABLE, ALTO_OSCY_PINTABLE, 0, 0); }