C# menu bez paska tytułowego

0

Witam, mam mały problem.
Otóż chciałbym zrobić aplikację w C#, w której formy nie miałyby pasków tytułowych. Niby wszystko git, jest jednak jedno ale: jak klikam prawym przyciskiem myszy na pasku zadań na moją aplikację nie wyświetla się żadne menu (działa tylko jak jest pasek tytułowy). I teraz pytanie: czy możliwe jest, aby menu się wyświetlało bez potrzeby wstawiania na górę paska tytułowego? Wygooglałem ten sam problem i znalazłem takie coś (tyle że chyba niewiele z tego zrozumiałem):
http://www.pcreview.co.uk/forums/display-system-menu-taskbar-without-titlebar-system-menu-button-t1368273.html

Wcześniej próbowałem deklarować wszystkie potrzebne flagi i funkcję SetWindowLong, ale wywalało mi PInvoke Exception czy jakoś tak, nie pamiętam już... Jeśli ktoś wie jak rozwiązać problem, byłbym wdzięczy. Pzdr.

1

Dobra, już nie trzeba, sorry za zaśmiecanie, własnie wpadłem na to jak zrobić. Żeby nie być samolubem, wstawiam rozwiązanie, może innym się przyda:

  1. Robimy formatkę bez paska tytułowego, tzn. ustawiamy FormBorderStyle na None.
  2. Dodajemy deklaracje z Windows Api. Wchodzimy do kodu formatki (prawym na nazwę pliku i "View code")
  3. Dodajemy using'a:
using System.Runtime.InteropServices;
  1. Wstawiamy deklaracje z pliku user32.dll do klasy okna + deklarujemy potrzebne flagi:
[DllImport("user32.dll")]
public extern static int GetWindowLong(IntPtr hWnd, int nIndex);
public const int GWL_STYLE = -16;

[DllImport("user32.dll")]
public extern static int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
public const int WS_SYSMENU = 0x00080000;
  1. Teraz ustawiamy flagę WS_SYSMENU dla okna (najlepiej to zrobić w zdarzeniu Load):

SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) | WS_SYSMENU);

  1. Enjoy! :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1