Greemax Posted July 12, 2013 at 08:35 PM Report #518599 Posted July 12, 2013 at 08:35 PM (edited) Boas, Estou a fazer um editor de mapas/niveis em com windows forms em C# e com SFML 2.0 em C++. A minha questão é que gosaria de saber como posso gerir o Mouse Input, mais especificamente, como chamar funções ao click. Eu fiz algo do género, mas não funciona. Alguém me ajuda? namespace QrioxEditor { public partial class Form1 : Form { [DllImport("QXHelper", CallingConvention = CallingConvention.Cdecl)] public static extern Int32 HelperInit(IntPtr HWND); [DllImport("QXHelper", CallingConvention = CallingConvention.Cdecl)] public static extern void HelperUpdate(); [DllImport("QXHelper", CallingConvention = CallingConvention.Cdecl)] public static extern void HelperDeInit(); [DllImport("QXHelper", CallingConvention = CallingConvention.Cdecl)] public static extern void HelperResize(float wiidth, float height); public Form1() { InitializeComponent(); this.Load += new EventHandler(this.Form1_Load); this.FormClosed += new FormClosedEventHandler(this.Form1_Closed); splitContainer1.Panel1.Resize += new EventHandler(this.Form1_ResizeEnd); this.MouseClick += new MouseEventHandler(this.Mouse_Click); //Input } void Form1_Load(object sender, EventArgs e) { if (HelperInit(splitContainer1.Panel1.Handle) == 0) Environment.Exit(1); Timer.Enabled = true; return; } void Form1_Closed(object sender, EventArgs e) { Timer.Enabled = false; HelperDeInit(); } void Form1_ResizeEnd(object sender, EventArgs e) { HelperResize(splitContainer1.Panel1.Width, splitContainer1.Panel1.Height); } public void Mouse_Click(object sender, MouseEventArgs e) { label1.Text = "Click"; //Input } private void Loop() { Application.DoEvents(); HelperUpdate(); } private void Timer_Tick(object sender, EventArgs e) { Loop(); } } } Edited July 12, 2013 at 08:37 PM by Greemax
nelsonr Posted July 12, 2013 at 09:59 PM Report #518606 Posted July 12, 2013 at 09:59 PM Boas Greemax, estás a adicionar o evento para o click no form (this.MouseClick). Se clicares dentro do form (não em cima de outro controlo) esse código está a funcionar. Se queres controlar o click noutro controlo, tens de adicionar ao evento de mouse click desse controlo.
Greemax Posted July 13, 2013 at 11:30 AM Author Report #518629 Posted July 13, 2013 at 11:30 AM É mesmo suposto funcionar apenas dentro do form, o problema é que mesmo assim não funciona. Algo ainda deve estar mal.
nelsonr Posted July 13, 2013 at 09:52 PM Report #518667 Posted July 13, 2013 at 09:52 PM Estás a clicar na área do form que não tem nenhum controlo? Aqui funciona na boa com esse código. Fizeste debug para ver se está a passar na linha que adiciona o evento?
Greemax Posted July 14, 2013 at 09:27 PM Author Report #518745 Posted July 14, 2013 at 09:27 PM XP Já sei qual o problema, Eu tenho um splitcontainer, pelo que tive de fazer splitContainer1.PanelX.MouseClick Eu pensei que pondo form/this que dava para clicar no splitcontainer visto que este esta embutido na form. Está resolvido então, obrigado pela ajuda! 👍
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now