Výsledky 1 až 11 z 11

Téma: [C++, C++ Builder 6] Jak odchytit minimalizaci aplikace?

  1. #1

    Standardní [C++, C++ Builder 6] Jak odchytit minimalizaci aplikace?

    Mam mensi problem, aplikace s nekolika Form, vetsinu casu uzivatel teto aplikace stravi na Formu, ktery neni hlavni, mainform je skryty a tudiz pri pokusu minimalizovat aplikaci se program neminimalizuje do taskbaru, ale do takoveho obdelnicku nad nabidkou start.

    Nevim, jak to udelat, potreboval bych nejak odchytit udalost, ze se okno chce minimalizovat, pomoci windowState to nejde, a zadna udalost onMinimize tam neni.

    Kdybych mohl nejak odchytit okamzik, kdy uzivatel chce minimalizovat okno, tak bych mohl provest prikaz Application->Minimize(); ale to nemuzu.
    Action stations, action stations. Set condition one throughout the ship. This is not a drill.

  2. #2

    Standardní

    Hmmm zkus se podivat na OnEnter/Leave, to se vola kdyz aplikace ztrati focus (jako ze pri minimalizaci asi jo), mozna se pak vola OnResize nebo OnMove.

    Status okna se da testovat bud pres WindowState nebo pres windoze API.
    In a world without fences and walls, who needs Gates and Windows? | Nesnáším wide monitory.
    Workstation: Xeon E3-1275v5 :: Silentmaxx TwinBlock fanless :: Fujitsu D3417-B :: 32 GB ECC DDR4 :: Radeon Pro WX 2100 fanless :: Dell UP2715K :: Gentoo
    Server: Xeon E3-1245v6 :: Supermicro X11SSH-F :: 32 GB ECC DDR4 :: Aquantia 5GBase-T :: 36 TB storage :: Gentoo Hardened

  3. #3

    Standardní

    Ani jedno z toho bohuzel neni pouzitelne. OnResize se skutecne vola, jenze uzivatel muze aplikaci resiznout i normalne, takze to nepude. Testovat pres WindowState bohuzel nejde, protoze ve chvili, kdy probiha OnResize je WindowState porad 1 a az teprve potom je 0, jenze to uz nijak neodchytim.
    Action stations, action stations. Set condition one throughout the ship. This is not a drill.

  4. #4
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    322

    Standardní

    C++ Builder neznám, ale když pracuju přímo s WinAPI, tak událost (on)RESIZE má parametry, pomocá kterých můžu zjistit, jaký typ resizu probíhá - maximalizace, minimalizace, změna šířky, výšky....nemám událost/metoda OnResize v C++ Builderu nějaký takový parametr?
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  5. #5

    Standardní

    Hmm, bohuzel, udalosti onResize (ani jedna z nich) se nevyvolava pri minimalizaci. A parametr, co se s oknem deje, tam stejne neni.

    Ale prisel jsem na to, ze existuje TApplication::OnMinimize, to by teoreticky slo, jenze ten formular, ktery se ma minimalizovat, neni mainform.

    Mozna, ze by slo nejak pouzit metodu
    Kód:
    void __fastcall TForm1::FormCanResize(TObject *Sender, int &NewWidth,
          int &NewHeight, bool &Resize)
    ale nevim, jestli to pujde.
    Action stations, action stations. Set condition one throughout the ship. This is not a drill.

  6. #6

    Standardní

    To je proste debilni. Ve chvili, kdy minimalizuju okynko, tak skutecne naskoci udalost onCanResize a spusti se moje funkce, kde mohu detekovat stav okna. Jenze ve chvili, kdy minimalizuji, tak je WindowState == wsNormal, a kdyz obnovuji okno z obdelnicku, tak ma v prubehu volani te metody stav wsMinimalized. Opravdu genialni. Jo a ta metoda se vola rovnou 2x
    Action stations, action stations. Set condition one throughout the ship. This is not a drill.

  7. #7
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    322

    Standardní

    Zkus sehnat na to nějakou komponentu...kdysi jsem něco takového měl v Delphi...hodil jsi to na formulář a ono to pak umělo minimalizovat všechna okna aplikace....
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  8. #8

    Standardní

    Citace Původně odeslal howard
    To je proste debilni. Ve chvili, kdy minimalizuju okynko, tak skutecne naskoci udalost onCanResize a spusti se moje funkce, kde mohu detekovat stav okna. Jenze ve chvili, kdy minimalizuji, tak je WindowState == wsNormal, a kdyz obnovuji okno z obdelnicku, tak ma v prubehu volani te metody stav wsMinimalized. Opravdu genialni. Jo a ta metoda se vola rovnou 2x
    Uz to tady bylo i receno - zkus pouzit funkce windoze API. Pres to bys mel dostat aktualni status. Budes akorat muset trochu hledat, jinak implementace do formulare by nemel byt problem.
    In a world without fences and walls, who needs Gates and Windows? | Nesnáším wide monitory.
    Workstation: Xeon E3-1275v5 :: Silentmaxx TwinBlock fanless :: Fujitsu D3417-B :: 32 GB ECC DDR4 :: Radeon Pro WX 2100 fanless :: Dell UP2715K :: Gentoo
    Server: Xeon E3-1245v6 :: Supermicro X11SSH-F :: 32 GB ECC DDR4 :: Aquantia 5GBase-T :: 36 TB storage :: Gentoo Hardened

  9. #9
    Senior Member Avatar uživatele Anduril
    Založen
    12.10.2002
    Bydliště
    OVA, OL
    Věk
    42
    Příspěvky
    3 474
    Vliv
    322

    Standardní

    Jj, musíš se nějak napíchnout na zprávy posílané windowsem formuláři...a pak by to mělo jít zjistit pomocí zprávy WM_SIZE, wParam = SIZE_MINIMIZED - když by formulář minimalizován / tady můžeš zavolat i minimalizaci hlavního formu...a pak wParam = SIZE_RESTORED a můžeš obnovit i hlavní formulář...
    ntb: HP EliteBook 8460p i7-2640M | 8GB RAM | 120GB SSD + 500GB HDD | ATi HD6470 | 14" HD+ | W7 PRO
    home: HP Docking Station | HP L2045W | WD 500GB Scorpio Blue USB box
    work: HP Docking Station | HP L2445W
    audio: Epiphone G-400 SG + Sounder Telecaster | E-MU 0202 | Cambridge Audio Azur 340R | Wharfedale Diamond 9.2 | Magnat Betasub 20A | Sennheiser HD555

  10. #10

    Standardní

    Citace Původně odeslal howard
    To je proste debilni. Ve chvili, kdy minimalizuju okynko, tak skutecne naskoci udalost onCanResize a spusti se moje funkce, kde mohu detekovat stav okna. Jenze ve chvili, kdy minimalizuji, tak je WindowState == wsNormal, a kdyz obnovuji okno z obdelnicku, tak ma v prubehu volani te metody stav wsMinimalized. Opravdu genialni. Jo a ta metoda se vola rovnou 2x
    To bude asi tim, ze pouzivas spatnou udalost? Spravne by to asi melo byt neco jako onResize(), ne ? onCanResize() samotne zmene velikosti predchazi (pripadne se zde da zmena velikosti zakazat = parametr "bool &Resize").

    (Ale uz si to presne nepamatuju, dlouho v tom nedelam)

  11. #11

    Standardní

    Vzdyt to delam.
    Action stations, action stations. Set condition one throughout the ship. This is not a drill.

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •