gRoOvE 0 Denunciar post Postado Maio 2, 2008 bom galera, fiz um programa pra calcular areas, segue ele ai...mas coloquei um system("cls") e ele limpou a tela toda, gostaria q limpasse apenas a opracao q foi realizada, deixando o quadro com a legenda, seria possivel ?? #include "stdafx.h" #include "areas_lib.h" #include "conio.h" #include "stdio.h" #include "stdlib.h" void main(void) { char opcao, novo = 'c'; float r,r1,r2,b,a,l1,l2; printf("|---------------------------------------------|\n"); printf("|Escolha uma das opcoes p/ calcular a area |\n"); printf("|---------------------------------------------|\n"); printf("|(c) Circulo (t) Triangulo |\n"); printf("|(r) Retangulo (e) Elipse |\n"); printf("|(P) Trapesio |\n"); printf("|---------------------------------------------|\n\n"); while(novo == 'c') { printf("Escolha uma opcao: "); fflush(stdin); scanf("%c",&opcao); switch(opcao) { case 'c': printf("\nDigite o raio do circulo: "); scanf("%f",&r); printf("Area do circulo: %.2f\n",A_Cir(r)); break; case 'r': printf("\nDigite a base: "); scanf("%f",&b); printf("Digite a altura: "); scanf("%f",&a); printf("Area do retangulo: %.2f\n",A_Retg(b,a)); break; case 't': printf("\nDigite a base: "); scanf("%f",&b); printf("Digite a altura: "); scanf("%f",&a); printf("Area do triangulo: %.2f\n",A_Trig(b,a)); break; case 'e': printf("\nDigite o raio(x): "); scanf("%f",&r1); printf("Digite o raio(y): "); scanf("%f",&r2); printf("Area da elipse: %.2f\n",A_Elip(r1,r2)); break; case 'P': printf("\nDigite a altura: "); scanf("%f",&a); printf("Digite o lado(a): "); scanf("%f",&l1); printf("Digite o lado(b): "); scanf("%f",&l2); printf("Area do trapesio: %.2f\n",A_Trap(a,l1,l2)); break; default: printf("Codigo invalido!"); } printf("\nContinuar(c) ou qualquer tecla para parar\n\n"); system("cls"); novo = getch(); } } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 2, 2008 bom q eu saiba naum tem como.. jah ouvi falar de uma função chamada clreol(); mas nunca usei! você pode jogar o quadro de legenda em um procedimento.. ai embaixo do comando de limpar a tela você chama o procedimento assim: system("cls"); legenda(); []'s Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Maio 2, 2008 Algo um pouco mais elaborado... Se estudar esse código, talvez te ajude um pouco... Criando um Handle de Screen secundário... HANDLE srcMenu, srcPrincipal; void MontaMenu(); int main(int argc, char* argv[]) { srcPrincipal = CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CONSOLE_TEXTMODE_BUFFER, 0 ); SetConsoleActiveScreenBuffer( srcPrincipal ); SetConsoleTextAttribute(srcPrincipal, FOREGROUND_RED); char buf[1024]; strcpy(buf, "Programa de teste de janela sobre janela em modo DOS\nPrograma versão 1.01 - Forum\nOmar Fernando Pessôa"); DWORD num; WriteConsole( srcPrincipal, buf, strlen(buf), &num, 0); //Monta tela no meio MontaMenu(); //------------------ system("pause"); CloseHandle(srcMenu); SetConsoleActiveScreenBuffer(srcPrincipal); system("pause"); CloseHandle(srcPrincipal); return 0; } void MontaMenu() { char buf[1024]; strcpy(buf, "----------------------------------------\n| |\n|Programa versão 1.01 - Forum |\n| Omar Fernando Pessôa |\n----------------------------------------------"); DWORD num; srcMenu = CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CONSOLE_TEXTMODE_BUFFER, 0 ); SetConsoleActiveScreenBuffer( srcMenu ); SetConsoleTextAttribute(srcMenu, FOREGROUND_BLUE); COORD pos = { 20,20 }; SetConsoleCursorPosition(srcMenu,pos); WriteConsole( srcMenu, buf, strlen(buf), &num, 0); } Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Maio 3, 2008 bom q eu saiba naum tem como.. jah ouvi falar de uma função chamada clreol(); mas nunca usei! você pode jogar o quadro de legenda em um procedimento.. ai embaixo do comando de limpar a tela você chama o procedimento assim: system("cls"); legenda(); []'s como funciona esse "procedimento"? como crio ?? omar.pessoa não intendi nada velho, sou iniciante...=// Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 3, 2008 clreol() tem na conio.h e também não é recomendado usar essa biblioteca. O jeito mais simples de se fazer isso sem ter que apelar pra handlers é colocar o código dentro do loop. void main(void) { char opcao, novo = 'c'; float r,r1,r2,b,a,l1,l2; do { system("cls"); printf("|---------------------------------------------|\n"); printf("|Escolha uma das opcoes p/ calcular a area |\n"); printf("|---------------------------------------------|\n"); printf("|(c) Circulo (t) Triangulo |\n"); printf("|(r) Retangulo (e) Elipse |\n"); printf("|(P) Trapesio |\n"); printf("|---------------------------------------------|\n\n"); printf("Escolha uma opcao: "); fflush(stdin); scanf("%c",&opcao); switch(opcao) { case 'c': printf("\nDigite o raio do circulo: "); scanf("%f",&r); printf("Area do circulo: %.2f\n",A_Cir(r)); break; case 'r': printf("\nDigite a base: "); scanf("%f",&b); printf("Digite a altura: "); scanf("%f",&a); printf("Area do retangulo: %.2f\n",A_Retg(b,a)); break; case 't': printf("\nDigite a base: "); scanf("%f",&b); printf("Digite a altura: "); scanf("%f",&a); printf("Area do triangulo: %.2f\n",A_Trig(b,a)); break; case 'e': printf("\nDigite o raio(x): "); scanf("%f",&r1); printf("Digite o raio(y): "); scanf("%f",&r2); printf("Area da elipse: %.2f\n",A_Elip(r1,r2)); break; case 'P': printf("\nDigite a altura: "); scanf("%f",&a); printf("Digite o lado(a): "); scanf("%f",&l1); printf("Digite o lado(b): "); scanf("%f",&l2); printf("Area do trapesio: %.2f\n",A_Trap(a,l1,l2)); break; default: printf("Codigo invalido!"); } printf("\nContinuar(c) ou qualquer tecla para parar\n\n"); novo = getch(); } while (novo = ''c'); } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 3, 2008 bom em C td é função vai! bom oq eu qro dizer é pra você separar por módulos, assim poderá chamar um módulo qnd quiser, exemplo: void Exemplo(){ printf("|---------------------------------------------|\n"); printf("|Escolha uma das opcoes p/ calcular a area |\n"); printf("|---------------------------------------------|\n"); printf("|(c) Circulo (t) Triangulo |\n"); printf("|(r) Retangulo (e) Elipse |\n"); printf("|(P) Trapesio |\n"); printf("|---------------------------------------------|\n\n"); } int main(){ Exemplo(); getch(); return 0; } volte a postar! []'s Compartilhar este post Link para o post Compartilhar em outros sites
Raphael_Suporte 0 Denunciar post Postado Maio 3, 2008 eu limpo usando o clrscr(); simples assim desculpa isso é usado para limpar a tela toda e não parte da tela Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Maio 4, 2008 bom em C td é função vai! bom oq eu qro dizer é pra você separar por módulos, assim poderá chamar um módulo qnd quiser, exemplo: void Exemplo(){ printf("|---------------------------------------------|\n"); printf("|Escolha uma das opcoes p/ calcular a area |\n"); printf("|---------------------------------------------|\n"); printf("|(c) Circulo (t) Triangulo |\n"); printf("|(r) Retangulo (e) Elipse |\n"); printf("|(P) Trapesio |\n"); printf("|---------------------------------------------|\n\n"); } int main(){ Exemplo(); getch(); return 0; } volte a postar! []'s ae quit, funcionou certinho com função :D vlws velho ^^ Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 4, 2008 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites