Red de conocimiento informático - Conocimiento sistemático - ¿Puedo pedir ayuda a expertos sobre cómo crear una interfaz gráfica para software escrito en lenguaje C?

¿Puedo pedir ayuda a expertos sobre cómo crear una interfaz gráfica para software escrito en lenguaje C?

# incluir ltwindows.h gt

¿Manejador? hOut

¿No válido? ShadowWindowLine(char?*cadena);? //Muestra una línea de caracteres en una ventana con un efecto de sombra y la ventana se muestra en el centro.

¿Anulado? DrawBox(bool? single? small_rect? rc);? //Dibujar un borde

¿Desactivar? Main()

{

¿Salir? =?GetStdHandle(STD_OUTPUT_HANDLE);? //Obtiene el identificador del dispositivo de salida estándar.

SetConsoleOutputCP(437);? //Establecer la página de códigos

ShadowWindowLine("¿Pantalla? ¿Respuesta? ¿Línea? ¿Palabras? ¿Y luego qué? ¿Centro? ¿Eso? ¿Ventana? ¿Qué usar? Sombra.");

cerrar identificador(hOut);? //Cierre el controlador del dispositivo de salida estándar.

}

¿Anulado? ShadowWindowLine(char?*str)

{

¿Console_Screen_Buffer_Information? bInformación? //Información del buffer de ventana

GetConsoleScreenBufferInfo(? Haote? ampbInfo?);? //Obtener información del búfer de la ventana

//?Calcular el tamaño y la posición de la ventana de visualización

int? x1,? y1,? x2,? y2,? ¿Numero? =?strlen(cadena);

x1? =?(bInfo.dwSize.X?-?chNum)/2? -?2;

y1? =?bInfo.dwTamaño.Y/2? -?2;

x2? =?x1? ?chNúm? ?4;

y2? =?y1? ?5;

¿Palabras? att1? =?intensidad_de_fondo;? //Atributo de sombra

¿Palabra? att0? =?primer plano_rojo? |¿Primer plano_verde? |¿Primer plano_azul? |?Prospect_Strength? |?

¿Fondo_rojo? |?Background_blue;? //Atributo de texto

¿Palabra? attTexto? =?primer plano_rojo? |foreground_strength;? //Propiedades del texto

//?Establecer sombra

¿Coordenadas? Bossado? =?{x1 1,? y1 1},? posTexto? =?{x1,? y 1 };

¿Para qué? (int?I = 0;?i lt5;?i)

{

FillConsoleOutputAttribute(hOut, att1, ?chNum? ?4, ?Posado? NULL);?

Bosado. y ;

}

//?Rellenar el fondo de la ventana

¿Para qué? (I = 0;?i lt5;?i)

{

FillConsoleOutputAttribute(hOut,?att0,?chNum??4,?posText,?NULL);?

posTexto. y ;

}

//?Escribir texto y bordes

posText. ¿incógnita? =?x1? ?2;

posText.

y? =?y1? ?2;

WriteConsoleOutputCharacter(hOut, str, ?strlen(str), ?posText, ?NULL);

Small_RECT? ¿rc? =?{x1,? y1,? x2-1,? y2-1};

DrawBox(sí, RC);

SetConsoleTextAttribute(hOut, binfo. atributos de vatios);? //Restaurar atributos originales

}

¿No es válido? DrawBox(bool? ¿Único? Small_rect?rc)

{

Carácter? ch cuadro[6];

¿Si? (b¿Soltero)?

{

chBox[0]? =?(char)0x da;? //Punto de la esquina superior izquierda

chBox[1]? =?(char)0x BF;? //Haga clic en la esquina superior derecha

chBox[2]? =?(char)0xc 0;? //Punto de la esquina inferior izquierda

chBox[3]? =?(char)0xd 9;? //Haga clic en la esquina inferior derecha

chBox[4]? =?(carácter)0x C4;? //¿Horizontal

chBox[5]? =?(carácter)0x B3;? //?Kenichi

}

Otros

{

chBox[0]? =?(char)0xc 9;? //Punto de la esquina superior izquierda

chBox[1]? =?(char)0xbb;? //Haga clic en la esquina superior derecha

chBox[2]? =?(char)0x c8;? //Punto de la esquina inferior izquierda

chBox[3]? =?(char)0x antes de Cristo;? //Haga clic en la esquina inferior derecha

chBox[4]? =?(carácter)0x CD;? //¿Horizontal

chBox[5]? =?(char)0xba;? //Kenichi

}

¿Coordenadas? pos? =?{rc. Izquierda,? rc. top };

WriteConsoleOutputCharacter(hOut, ampchBox[0],?1,?pos,?NULL);

¿Para qué? (Posición. NULL);

Posición. ¿incógnita? =?rc. Correcto;

WriteConsoleOutputCharacter(hOut, ampchBox[1],?1,?pos,?NULL);

¿Para qué? (posición.y?=?rc.top 1;?posición.Y ltrc.bottom;posición.Y)

{

Posición. ¿incógnita? =?rc. Izquierda;

WriteConsoleOutputCharacter(hOut, ampchBox[5], ?1, ?pos, ?NULL);

Posición. ¿incógnita? =?rc. Derecha;

WriteConsoleOutputCharacter(hOut, ampchBox[5], ?1, ?pos, ?NULL);

}

Posición. ¿incógnita? =?rc. Izquierda;? Ubicación. y? =?rc.

Abajo;

WriteConsoleOutputCharacter(hOut, ampchBox[2], ?1, ?pos, ?NULL);

¿Para qué? (Posición. NULL);

Posición. ¿incógnita? =?rc. Sí;

WriteConsoleOutputCharacter(hOut, ampchBox[3],?1,?pos,?NULL);

}