Problem z minimalizacją aplikacji

Odpowiedz Nowy wątek
2011-08-17 22:24
(X)_(X)
0

Napotkałem problem z minimalizacją mojej aplikacji. Kiedy ustawiłem sobie w właściwościach formy na ControlBox na False i FromBorderStyle na None. To po tym ustawieniu nie mogę minimalizować i maksymalizować mojej aplikacji.

Dodam jeszcze, że zrobiłem butona który minimalizuje moją aplikacje.
Kod minimalizacji:

        private void button1_Click(object sender, EventArgs e)
        {
            this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
        }

Chciałbym to jakoś poprawić. :(

Mam nadzieje, że da się w łatwy sposób rozwiązać mój problem.
Czekam na szybką odpowiedz od Was.

Pozostało 580 znaków

2011-08-17 22:54
0

przewróć ControlBox i FromBorderStyle na domyślne.

Niby jakiej oczekujesz odpowiedzi? Jak ukryjesz pasek do minimalizacji aplikacji to logiczne będzie, że się go nie będzie dało kliknąć a co za tym idzie standardowo zminimalizować aplikacji. Pozostaje jedynie dodatkowy przycisk, skrót, cokolwiek, co będzie oferować tą funkcjonalność.


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-08-17 22:59
Zasilany z baterii
0

A na czym konkretnie polega problem? Bo dla opisanej sytuacji przycisk minimalizuje formę.

Pozostało 580 znaków

2011-08-17 23:00
(X)_(X)
0

Nie da się jakoś inaczej tego załatwić (w inny sposób)?

Problem polega na tym, że z maska Start aplikacja nie reaguje na kliknięcia, żeby ją zmaksymalizować lub zminimalizować.

Pozostało 580 znaków

2011-08-17 23:02
Zasilany z baterii
0

Napisz pełnymi zdaniami co konkretnie chciałbyś osiągnąć.

Pozostało 580 znaków

2011-08-17 23:06
(X)_(X)
0

Utworzyłem sobie formę. (form 1) Ustawiłem w właściwościach formy na ControlBox na False i FromBorderStyle na None i od tamtej pory aplikacja nie reaguje na kliknięcie kursorem na pasku Start (System Windows). Moja aplikacja teraz nie chce się zminimalizować, ani zmaksymalizować po kliknięciu na nią na pasku Start.

Pozostało 580 znaków

2011-08-17 23:21
Zasilany z baterii
0

I tak to właśnie działa! Powodem jest ustawienie FormBorderStyle. Zmiana tego zachowani to zapewne problem na poziomie WinAPI. Może ktoś w necie opublikował dpowiedni patent.

A jak ustawisz sobie ShowInTaskbar na false to nie będzie w co klikać i problem zniknie!.

Pozostało 580 znaków

2011-08-18 12:23
(X)_(X)
0

A widział ktoś może rozwiązanie tego problemu w postaci przykładowego kodu?

Pozostało 580 znaków

2011-08-18 16:54
msm
1

Zmiana tego zachowani to zapewne problem na poziomie WinAPI.

Mam wrażenie że nawet w WinAPI nie jest prosto... Zmiana FormBorderStyle automatycznie powoduje że okno po prostu nie dostaje pewnych komunikatów (wynika to z tego że zmienia się również styl który dostaje WinAPI). Proponuję przetestowanie kodu (dla stylu Sizable i None):

public partial class Form1 : Form
{
    protected override void WndProc(ref Message m)
    {
        if (m.Msg == 0x112)
        {
            if (m.WParam.ToInt32() == 0xF020)
            {
                MessageBox.Show("Chcą mnie zminimalizować!");
            }
        }
 
        base.WndProc(ref m);
    }
}

Mógłbyś to zrobić regionami (również za pomocą WinAPI) ale przykładów do tego ze zrozumiałych powodów w C# raczej nie znajdziesz... Tym niemniej jeśli chcesz się przez to przedzierać:

http://www.flipcode.com/archives/Win32_Window_Skinning.shtml
http://www.codeproject.com/KB/GDI/rgnguide.aspx

(edit:) -----------------------------------

Ok, szybki research. W C# jest dostęp do regionów, mimo że mocno okrojonych to wystarczających dla osiągnięcia tego celu.
Trochę mi czasu zajęło napisanie tego we w miarę dobry sposób, ale:

Styl zostaw Sizable i dodaj sobie do jakiegoś OnLoada kod

int borderWidth = SystemInformation.FrameBorderSize.Width;
int titlebarHeight = SystemInformation.CaptionHeight + borderWidth;
 
Rectangle csz = new Rectangle(borderWidth, titlebarHeight, ClientSize.Width, ClientSize.Height);
this.Region = new Region(csz);

Za to jeśli i jakie cuda będzie okno wyprawiało podczas działania nie odpowiadam (ale takie są koszty zmieniania ustalonych zasad)...

edytowany 6x, ostatnio: msm, 2011-08-18 17:19

Pozostało 580 znaków

2011-08-18 19:53
(X)_(X)
0

Dzięki MSN jesteś wielki. :)

Pozostało 580 znaków

2011-09-12 16:28
Anonim
0

Zrobiłem coś podobnego co kolega z wątku, i zastosowałem to co MSM podał, ale nic to nie dało, nadal mam błąd :(

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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