C# menu bez paska tytułowego

C# menu bez paska tytułowego
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
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:
Kopiuj
using System.Runtime.InteropServices;
  1. Wstawiamy deklaracje z pliku user32.dll do klasy okna + deklarujemy potrzebne flagi:
Kopiuj
[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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.