Ir ao conteúdo
  • Cadastre-se

cyer

Membro Pleno
  • Posts

    150
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de cyer em como desenhar uma estrela no c++ foi marcado como solução   
    Está aparecendo essas mensagens porque você está passando uma valor do tipo double para um argumento que é do tipo inteiro(int), para resolver esse problema, você tem 2 opções:  fazer uma conversão de tipo(cast) de double para int ou desativar o warning especifico.
     
    Primeira opção(Usando Casts):
    LineTo  (tela, static_cast<int>(k) , static_cast<int>(w)  ) ;//vai para essa posição LineTo  (tela, static_cast<int>(x2), static_cast<int>(y2) ) ; LineTo  (tela, static_cast<int>(k2), static_cast<int>(w2) ) ; LineTo  (tela, static_cast<int>(x3), static_cast<int>(y3) ) ; LineTo  (tela, static_cast<int>(k3), static_cast<int>(w3) ) ; LineTo  (tela, static_cast<int>(x4), static_cast<int>(y4) ) ; LineTo  (tela, static_cast<int>(k4), static_cast<int>(w4) ) ; LineTo  (tela, static_cast<int>(x5), static_cast<int>(y5) ) ; LineTo  (tela, static_cast<int>(k5), static_cast<int>(w5) ) ; LineTo  (tela, static_cast<int>(x), static_cast<int>(y)  ) ;  
    Segunda opção(Desativando o warning do compilador):
     
    Visual Studio:
    #include <windows.h> #include <math.h> #include <conio.h> #pragma warning(disable: 4244) // 4244 é código do warning: warning C4244: 'argument': conversion from 'double' to 'int', possible loss of data // Restante do código...  
    Não lembro como desativar para GCC, pois não uso GCC, mas que eu me lembre seria algo assim:
     
    #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wuninitialized"     // Função que deseja desabilitar os warnings aqui, no caso vai desabilitar o warning para variáveis não inicializadas #pragma GCC diagnostic pop  
    Sobre as linhas sumir, tenho 2 coisas em mentes:
    1 - A linha ainda não foi calculada para o frame atual(i++ só vai incrementar no próximo frame), essa opção é a que eu acho mais provável.
    2 - Talvez alguma lentidão no código, geralmente algorítimos de desenhos que envolve bastante cálculos assim, são extremamente lentos, visto que a GDI é extremamente lenta também tanto que os jogos preferem usar OpenGL, DirectX e outras interfaces gráficas por serem muito mais rápido que GDI, juntando com funções de cálculo da math.h(sin, cos, ...) fica mais lento ainda, e pra piorar você ainda colocou um Sleep dentro.
     
    Para detectar se a tecla esc foi pressionada você tem que verificar dentro da WM_KEYDOWN:
    LRESULT CALLBACK WndProc (HWND janela, UINT message, WPARAM wParam, LPARAM lParam){     HDC tela ;     COLORREF color;     PAINTSTRUCT ps ;     int z=0;     double x,y,x2,y2,x3,y3,x4,y4,x5,y5;     double k,w,k2,w2,k3,w3,k4,w4,k5,w5;     tela = GetDC (janela) ;     switch (message){     case WM_KEYDOWN:         if (wParam == VK_ESCAPE) // Verifica se a tecla que foi pressionada é a tecla ESC(VK_ESCAPE)         { // Tecla ESC pressionada o que deseja fazer?         } return 0;     case WM_PAINT :         tela = BeginPaint (janela, &ps) ;         x =cos( i     *3.141615/180)*200+300;         y =sin( i     *3.141615/180)*200+250;         x2=cos((i+72 )*3.141615/180)*200+300;         y2=sin((i+72 )*3.141615/180)*200+250;         x3=cos((i+144)*3.141615/180)*200+300;         y3=sin((i+144)*3.141615/180)*200+250;         x4=cos((i+216)*3.141615/180)*200+300;         y4=sin((i+216)*3.141615/180)*200+250;         x5=cos((i+288)*3.141615/180)*200+300;         y5=sin((i+288)*3.141615/180)*200+250;         k =cos( i+36  *3.141615/180)*100+300;         w =sin( i+36  *3.141615/180)*100+250;         k2=cos((i+108)*3.141615/180)*100+300;         w2=sin((i+108)*3.141615/180)*100+250;         k3=cos((i+180)*3.141615/180)*100+300;         w3=sin((i+180)*3.141615/180)*100+250;         k4=cos((i+252)*3.141615/180)*100+300;         w4=sin((i+252)*3.141615/180)*100+250;         k5=cos((i+324)*3.141615/180)*100+300;         w5=sin((i+324)*3.141615/180)*100+250;         i++;         MoveToEx(tela,x ,y,0) ;//posição de inicio         LineTo  (tela, static_cast<int>(k) , static_cast<int>(w)  ) ;//vai para essa posição         LineTo  (tela, static_cast<int>(x2), static_cast<int>(y2) ) ;         LineTo  (tela, static_cast<int>(k2), static_cast<int>(w2) ) ;         LineTo  (tela, static_cast<int>(x3), static_cast<int>(y3) ) ;         LineTo  (tela, static_cast<int>(k3), static_cast<int>(w3) ) ;         LineTo  (tela, static_cast<int>(x4), static_cast<int>(y4) ) ;         LineTo  (tela, static_cast<int>(k4), static_cast<int>(w4) ) ;         LineTo  (tela, static_cast<int>(x5), static_cast<int>(y5) ) ;         LineTo  (tela, static_cast<int>(k5), static_cast<int>(w5) ) ;         LineTo  (tela, static_cast<int>(x), static_cast<int>(y)  ) ;         if(i>360)i=0;         Sleep(500);         InvalidateRect (janela, NULL, TRUE) ;//limpa a tela         EndPaint (janela, &ps) ;         return 0;     case WM_DESTROY:         PostQuitMessage (0) ;         return 0 ;     }     return DefWindowProc (janela, message, wParam, lParam) ; }  
  2. O post de cyer em Da para criar um Vetor de FILE *? foi marcado como solução   
    FILE* f[100] = { 0 };  
    Para inicializar o vetor vai ter que usar um for ou passar a posição do vetor:
     
    for (int i = 0; i < 100; i++) {       f[i] = fopen(...); }  
    Passando o indice:
     
    f[10] = fopen(...); f[50] = fopen(...);  

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!