Jump to content
Sign in to follow this  
Bruno

C# - Interface

Recommended Posts

Bruno

Tenho um trabalho de uma cadeira em que tenho que fazer um Leitor de Video (do tipo do BSPlayer, WMP, etc...).

Para esse projecto usaremos alguns .dll fornecidos e C#.

A interface sugerida é uma janela com os controladores do video e o respectivo filme num quadrado por cima (tudo na mesma janela)...

Como gosto do BSPlayer perguntei ao professor se era possivel (ao invés do dito) fazer a parte do video separada do controlador (o BSPlayer tem o video numa janela e o controlador noutra...). Ele encorajou-me e portanto venho aqui perguntar se alguem sabe fazer isso?

Já agora, existe GTK para C#? Já ouvi falar em GTK#...

O que sugerem para interfaces? E como acham q de uma janela controlo outra? 😳

Share this post


Link to post
Share on other sites
will09

Sorry inda sou noob!  :wallbash:

Mas se descobrires partilha ai!  :)

PEACE  :smoke:

Share this post


Link to post
Share on other sites
labrugice

Boas, primeiro aproveito para dar os parabens pelo forum, é bom ver iniciativas destas em portugues  :)

Em relação a questão, vou tentar ajudar. Não garanto que seja a melhor maneira pq ainda estou a aprender C#, mas aqui vai:

Podes criar 2 forms, uma para os controles e outra para o video como disseste. Na segunda form, nos parametros do construtor podes por uma string que representa o nome do ficheiro a visualizar e crias metodos publicos para controlar o video tipo "Play()", "Stop()", etc

Na primeira form, inicializas primeiro a form2 ao nivel da classe:

Form2 form;

depois, quando o user selecionar o ficheiro cria-se uma nova form2:

form = new Form2(nomedoficheiro);
form.Show();

depois podes aceder aos metodos e propriedades da form:

form.Play();
form.Stop();
etc..

Não sei se era isso que pretendias, se não for, tentarei ajudar no que puder.

Um site que gosto bastante e o http://www.codeproject.com/

Share this post


Link to post
Share on other sites
Bruno

Olá, obrigado!

Já andei por esse site! :)

Obrigado irei tentar fazê-lo! (entretanto se alguem descubrir um exemplo q desse mesmo para correr e mexer eu ficava agradeçido)

Um abraço! :)

Share this post


Link to post
Share on other sites
Bruno

Se n for pedir mto podes gravar com compatibilidade com o 2003? É q na escola só têm o 2003 (e é lá q vamos fazer a discussão)!

Um abraço!

(isto supondo q é facil, caso tenhas q reescrever o codigo, deixa estar :) )

Share this post


Link to post
Share on other sites
labrugice

Se tivesse instalado o 2003 fazia isso, mas acho que com o 2005 não da. :)   Mas se abrires os ficheiros *.cs individualmente da para ver bem como funciona.

Share this post


Link to post
Share on other sites
Bruno

Já explorei e thk... :P

Outra coisa, eu na 2ª janela não quero a barra do topo portanto escolhi a opção none (que tira-a) no entanto, com ela a none,  não me permite mover a janela!

Sabes como contorno esse problema?

Obrigado

Share this post


Link to post
Share on other sites
Bruno

Estou com outra dúvida e gostava que me ajudassem.

Eu queria detectar no código quando uma das janelas é fechada.

Share this post


Link to post
Share on other sites
motherFFH

detectar quando a janela é fechada:

protected override void OnClosing(CancelEventArgs e) {

  base.OnClosing (e);

  ...

}

deixar que se mova é mais complicado,tens que implementar IMessageFilter e usar win32 api para fazer mover a janela:

bool System.Windows.Forms.IMessageFilter.PreFilterMessage(ref Message m)

{

  if (this.IsDisposed)

    return false;

  if (m.Msg == WM_LBUTTONDOWN) // mover a janela com o click do botao esquerdo do rato

  {

    ReleaseCapture();

    SendMessage(Handle, WM_NCLBUTTONDOWN, (IntPtr)HTCAPTION, IntPtr.Zero);

    return true;

  }

  ...

  return false;

}

[DllImport("User32.dll")]

extern public static bool ReleaseCapture();

[DllImport("User32.dll")]

extern public static int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

public const int WM_LBUTTONDOWN            = 0x0201;

public const int WM_NCLBUTTONDBLCLK        = 0x00A3;

public const int HTCAPTION = 0x2;

Share this post


Link to post
Share on other sites
Bruno

Obrigado pela resposta rápida e completa :)

Se tiver mais duvidas eu volto a chatear :cheesygrin: (a 1ª parte do trabalho é para entregar 2ªf, no fds é que isto vai ter que andar mais :) )

Share this post


Link to post
Share on other sites
Bruno

Uma vez q tenho dois forms e quero apenas uma janela na taskbar tenho um problema! A segunda "janela" não apareçe qd a 1ª "ganha" focus!

Já vi que existe uma cena .focus() no entanto não sei onde hei-de invocar! Em suma o que queria era: qd clicam no programa na traskbar aparecessem as duas!

Obrigado desde já a quem me ajudar :cheesygrin:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.