Problem z minimalizacją aplikacji

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.

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ść.

0

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

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ć.

0

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

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.

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!.

0

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

2

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)...

0

Dzięki MSN jesteś wielki. :)

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 :(

0

Nikt nie może mi pomóc, albo czym to jest spowodowane, że u mnie to nie chodzi ? :(

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