cyer
-
Posts
150 -
Cadastrado em
-
Última visita
Tópicos solucionados
-
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) ; }
-
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