Usuário com melhor resposta
programa não inicia

Pergunta
-
eu sou muito curioso e muito fã de programação c#. pois bem, olá á todos!
eu estou tentando criar um jogo com directx , e eu fiz uns testes e conseguir criar um codigo bem básico,
que exibe uma tela directx e com uma cor azul. mas o meu programa não abre de jeito nenhum. me ajudem.vou postar meu código para vocês verem:
using System.Drawing; using System.Windows.Forms; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; namespace DirectX3D_Version1 { public partial class Form1 : Form { //nossa variável global para este projeto Device device; public Form1() { //configura o tamanho inicial para nossa janela this.ClientSize = new System.Drawing.Size(640, 480); //e o titulo no nossa janela this.Text = "Direct3D Device"; InitializeComponent(); } public bool IniciaDispositivo() { try { //agora configura nosso objeto D3D PresentParameters presentParams = new PresentParameters(); presentParams.Windowed = true; presentParams.SwapEffect = SwapEffect.Discard; device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams); return true; } catch(DirectXException) { return false; } } public void Renderiza() { if (device == null) return; //limpa o backbuffer com uma cor azul claro device.Clear(ClearFlags.Target, System.Drawing.Color.Aqua, 1.0f, 0); //começa a cena device.BeginScene(); //renderização dos objetos podem acontecer aqui //fim da cena device.EndScene(); device.Present(); } } }
using System; using System.Windows.Forms; namespace DirectX3D_Version1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { using (Form1 frm = new Form1()) { if (!frm.IniciaDispositivo()) { //Inicia o Dispositivo MessageBox.Show("Não foi possível inicializar o Diretc3D. O programa fechará!!!"); return; } frm.Show(); // exibe o programa while (frm.Created) { frm.Renderiza(); //renderiza Application.DoEvents(); } } } } }
desde já agradeco...
Qual é o caminho para ser um bom programador?! Resp: Estudar, estudar e estudar...
Respostas
-
Boa tarde.
Flavio, reproduzi o erro aqui e identifiquei o problema (foi só debugar):
Para corrigir isso foi bastante simples. Vá no teu App.config e faça isso:
<startup useLegacyV2RuntimeActivationPolicy="true">
E o problema está resolvido.
Att., Rafael Simor
Todas as Respostas
-
Como assim ele não abre?
Está ocorrendo algum erro?
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
erro de codigo não tem, meu código está correto. mas quando compila e eu vou na pasta onde ele está e tento abrir ele ele não abre. vem uma mensagem do windows falando que meu aplicativo parou de funcionar.
Qual é o caminho para ser um bom programador?! Resp: Estudar, estudar e estudar...
-
Boa tarde.
Esta mensagem que o programa parou de funcionar provavelmente é uma exceção que não foi tratada.
Acho que o problema esteja aqui:
//configura o tamanho inicial para nossa janela this.ClientSize = new System.Drawing.Size(640, 480); //e o titulo no nossa janela this.Text = "Direct3D Device"; InitializeComponent();
Tente colocar o método InitializeComponent(); na primeira linha, antes das mudanças de valores.
Att., Rafael Simor
- Marcado como Resposta Marcos SJ quarta-feira, 9 de dezembro de 2015 17:15
- Não Marcado como Resposta Marcos SJ quarta-feira, 9 de dezembro de 2015 17:15
- Sugerido como Resposta Marcos SJ quarta-feira, 9 de dezembro de 2015 18:45
- Não Sugerido como Resposta Marcos SJ quinta-feira, 10 de dezembro de 2015 18:36
- Sugerido como Resposta Ggfa sábado, 26 de fevereiro de 2022 14:35
-
Quando isso ocorre não deveria apresentar uma mensagem de erro específica inclusive mostrando onde a exceção não tratada ocorre?
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Quando isso ocorre não deveria apresentar uma mensagem de erro específica inclusive mostrando onde a exceção não tratada ocorre?
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
Att., Rafael Simor
-
-
simplesmente o programa não inicia!!! mas meu codigo compila perfeitamente sem erros ou warning!!!
Qual é o caminho para ser um bom programador?! Resp: Estudar, estudar e estudar...
Flávio, tentaste fazer o que sugeri?
InitializeComponent(); //configura o tamanho inicial para nossa janela this.ClientSize = new System.Drawing.Size(640, 480); //e o titulo no nossa janela this.Text = "Direct3D Device";
Att., Rafael Simor
-
-
Ainda acho que o problema seja no construtor; tente:
try { InitializeComponent(); //configura o tamanho inicial para nossa janela this.ClientSize = new System.Drawing.Size(640, 480); //e o titulo no nossa janela this.Text = "Direct3D Device"; } catch(Exception ex) { MessageBox.Show("Erro: " + ex.Message); }
Se não der certo, deixe seu Main() dentro de um try/catch também.
Como falado anteriormente, tem alguma exceção não tratada que está causando a quebra do programa, porém ao abrir diretamente pelo executável ele simplesmente mostra que o programa parou de responder.
Att., Rafael Simor
-
-
-
Sim eu sempre quando mexo no código eu salvo e dou um build e carrego o programa. eu uso o visual studio 2015 e windows 8.1, mas eu até já parei de quebrar a cabeça neste projeto. cansei sabe?
Qual é o caminho para ser um bom programador?! Resp: Estudar, estudar e estudar...
-
Não desista, Flavio. :)
Tente o seguinte, tira esse while:
while (frm.Created) { frm.Renderiza(); //renderiza Application.DoEvents(); }
Talvez esteja gerando um stack overflow aqui.
Tente:
- comentando totalmente o while;
- somente deixando as duas linhas (frm.Renderiza(); e Application.DoEvents(););
- e somente deixando a primeira/segunda linha, etc.
Se tu não consegues debugar, vamos tentar isolar em qual parte do código o problema está sendo gerado.
Att., Rafael Simor
-
-
Boa tarde.
Flavio, reproduzi o erro aqui e identifiquei o problema (foi só debugar):
Para corrigir isso foi bastante simples. Vá no teu App.config e faça isso:
<startup useLegacyV2RuntimeActivationPolicy="true">
E o problema está resolvido.
Att., Rafael Simor
-
-
Bom dia,
Por falta de retorno do usuário, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma thread nova.
AtenciosamenteMarcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Desculpa reviver essa mensagem
Fiquei por três semanas tentando resolver esse mesmo problema, funcionava na minha maquina mas em outras não, após pesquisar muito "li quase o forum inteiro e tentar quase tudo oferecido" achei essa resposta:
Tente colocar o método InitializeComponent(); na primeira linha, antes das mudanças de valores.
No meu caso não era mudanças de valores mas uma única linha de código que vinha antes de "InitializeComponent()" rescrevendo em todos os Forms funcionou normalmente.
Vs 2019, e mesmo compilado como AnyCPU roda tanto em 32 como 64.
Obrigado