Jump to content

C# - Interface


Bruno
 Share

Recommended Posts

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? ?

Link to comment
Share on other sites

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/

Link to comment
Share on other sites

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;

Link to comment
Share on other sites

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 😁

Link to comment
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
 Share

×
×
  • 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.