2016-04-23 18 views
0

Ich versuche, ein HUD für Poker zu tun,C# kann nicht konzentrieren, wenn SetParent user32.dll

So ist die Idee Form über die Poker-Applikation eingestellt ist (was nicht meine Anwendung ist) und halten Sie das Formular immer über den Tisch, auch wenn ich den Pokertisch

enter image description here

So bekomme ich die IntPtr aus der Tabelle mit

[DllImport("user32.dll")] 
    public static extern int EnumWindows(EnumWindowsCallback lpEnumFunc, int lParam); 

bewegen brauche ich ein Form für jeden Spieler für die Anzeige am Tisch die Informationen zu einem Spieler

Also ich mein Formular erstellen, die ich an den Poker-Tisch befestigen mit

[DllImport("user32.dll")] 
private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

Aber dann, wenn ich die Form zeigen, verlor ich den Fokus! Ich kann einfach nicht auf den Pokertisch oder auf meinen Hauptrahmen klicken. Eine Lösung ?

private void displayHudForEachPlayer(IntPtr pokerTable) { 


     StringBuilder windowTitle = new StringBuilder(256); 
     GetWindowText(pokerTable, windowTitle, windowTitle.Capacity); 

     if (windowTitle.ToString().Contains("Real money")) 
     { 

      HudPlayerView hudPlayer1 = new HudPlayerView(); 
      //hudPlayer1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

      Console.WriteLine(windowTitle.ToString()); 

      IntPtr childHandle = hudPlayer1.Handle; 

      ParentWndWrapper oParentWnd = new ParentWndWrapper(pokerTable); 
      SetParent(childHandle, pokerTable); 

      hudPlayer1.SetBounds(0, 0, 100, 50); 
      hudPlayer1.ShowDialog(); 
     } 
    } 

Ich habe auch versucht mit

IWin32Window w = Control.FromHandle(pokerTable); 
hudPlayer1.ShowDialog(w); 

statt SetParent aber dasselbe Ergebnis.

enter image description here

Antwort

1

Sie ShowDialog() rufen, die ein modales Fenster zeigt, dass Sie von der Möglichkeit zur Interaktion mit irgendetwas anderem, bis der modalen Dialog geschlossen wird gestoppt.

Versuchen Sie es mit Form.Show() und setzen Sie TopMost = true auf jedes der Formulare, damit sie nicht verdeckt werden, wenn Sie auf die Poker App klicken.

+0

So offensichtlich ... tkanks. – amdev