FormView fara frame 3D

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
rdenis
Membru
Membru
Posts: 50
Joined: 10 Apr 2010, 20:16
Judet: Iaşi

FormView fara frame 3D

Post by rdenis » 28 Jun 2010, 19:54

buna tuturor...

as dori sa scot frame-ul din jurul unui dialog cand utilizez FormView si sa fie ca si cum ar fi un dialog...
printre exemplele din google am gasit un articol in care spune despre modificarea Style-ului ferestrei, ceva de genul

Code: Select all

cs.style = WS_THICKFRAME;
in functia PreCreateWindow a FormView-ului, insa aceasta modificare genereaza un DEBUG Assertion Failure! in viewcore.cpp la linia 67 la DEBUG...
in RELEASE acesta eroare nu mai apare insa fereastra principala arata ca si cum s-ar maximiza insa nu o si face, adica se muta in coltul din stanga si butonul de MAXIMIZE pare activat insa fereastra nu e maximizata, ceea ce as fi vrut eu sa faca :reallymad: ...

multumesc anticipat...
Denis



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: FormView fara frame 3D

Post by Ovidiu Cucu » 28 Jun 2010, 20:35

rdenis wrote: printre exemplele din google [...]
...printre exemplele din google sunt si multe porcarii. ;)

Prima data trage un ochi pe la FAQ, Tips & Tricks.
Poate gasesti mai repede acolo lucruri folositoare.
Este unul numit Cum setez dimensiunile frame-ului unui form view care nu e chiar ce vrei tu dar te duce pe aproape.
Mai ramane sa ajustezi ceva stiluri la view si la parintele lui, frame si gata.
Deci, in plus fata de ce este la exemplele de acolo
  1. scoti stilul WS_EX_CLIENTEDGE de la view ca sa scapi de efectul 3D;

    Code: Select all

       ModifyStyleEx(WS_EX_CLIENTEDGE, 0, SWP_FRAMECHANGED);
  2. scoti WS_THICKFRAME de la frame-ul parinte daca vrei sa-l faci si ne-sizeabil asa cum ii sta bine unui dialog care se respecta;

    Code: Select all

       pFrame->ModifyStyle(WS_THICKFRAME, 0, SWP_FRAMECHANGED);
  3. gata. :)

rdenis
Membru
Membru
Posts: 50
Joined: 10 Apr 2010, 20:16
Judet: Iaşi

Re: FormView fara frame 3D

Post by rdenis » 28 Jun 2010, 22:04

multumesc din nou Ovidiu...sugestiile tale au functionat perfect...
am observat totusi ca frame-ul nu isi mai redeseneaza marginile non-client (glass) din partile laterale si nici docking panes nu isi mai redeseneaza drag handle-ul cand folosesc acest patch...e din cauza lor sau a MFC Feature pack??

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: FormView fara frame 3D

Post by Ovidiu Cucu » 29 Jun 2010, 13:09

Se pare totusi ca n-au functionat chiar "perfect". :)
Nu stiu daca e de la feature pack si n-am cum sa verific pe moment.
Eu am testat cu VS2005.
Totusi, cum arata la tine functia OnIntialUpdate?

rdenis
Membru
Membru
Posts: 50
Joined: 10 Apr 2010, 20:16
Judet: Iaşi

Re: FormView fara frame 3D

Post by rdenis » 29 Jun 2010, 23:06

buna ovidiu...cand am zis ca a functionat perfect ma refeream la faptul ca setarile respective au facut exact ceea ce aveam nevoie fara erori :)....
cat priveste problema cu redesenarea am gasit problema: eu nu am inteles exact unde vine "pFrame->ModifyStyle(WS_THICKFRAME, 0, SWP_FRAMECHANGED);" si l-am pus in OnInitialUpdate-ul mainframe-ului si modificat cu "this->ModifyStyle(WS_THICKFRAME, 0, SWP_FRAMECHANGED);"...dupa mai multe teste am observat ca daca las aceasta linie imi face frame-ul cu probleme descrise mai sus si aceeasi problema o au si ferestrele docked insa numai atunci cand sunt unpinned si le redimensionez..aceasta problema a ferestrelor docked apare si fara linia respectiva asadar cred ca e din MFC...

functia OnInitialUpdate e cea standard creata de wizard cu adaugarea ta....

Post Reply