CWnd derived class not working

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
nmg
Junior
Junior
Posts: 43
Joined: 12 Jul 2007, 07:36

CWnd derived class not working

Post by nmg » 06 Dec 2012, 14:07

In primul rand, buna ziua dupa o lunga perioada in care nu am mai dat pe aici, ma bucur sa va regasesc.

In al doilea rand, iata problema: intr-un proiect doc / view facut in VC 2006, vreau sa implementez o fereasta de cautare, cum are Chrome: cand apesi Ctrl + F, apare o mica fereastra sub toolbar (deci in spatiul client al view-ului), cu un edit si trei butoane alaturi: inainte, inapoi si exit.

Pentru asta am derivat o clasa CSearchWnd din CWnd in care am creat dinamic cele 3 controale de care ziceam. In CMainFrame am facut o variabila de acest fel, care apoi a fost creata in CMainFrame::OnCreate impreuna cu toolbar si statusbar.

La rulare, fereastra in cauza este creata, apara ca vizibila dar nu accepta nici un fel de input: edit-ul si butoanele nu functioneaza.

Ce anume am scapat din vedere ?



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

Re: CWnd derived class not working

Post by Ovidiu Cucu » 06 Dec 2012, 14:56

Ca o paranteza: de VC2006 (sau VS2006) n-am auzit. Poate vrei sa spui 2002/3/5/8/10/12 sau 6.0.
FYI, batranul Visual Studio 6.0 a fost lansat in anul de gratie 1998.
In fine nu prea conteaza in problema noastra...

Ceea ce inteleg ca vrei sa faci, adica o fereastra continand cateva controale pe care s-o "agati" de frame, se realizeaza cel mai bine, mai usor si fara dureri de cap cu un dialog bar (vezi clasa MFC CDialogBar).

Nu are rost in MFC sa reinventezi roata (ex. sa derivezi direct din CWnd), atunci cand ai in ceva "gata preparat".

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

Re: CWnd derived class not working

Post by Ovidiu Cucu » 06 Dec 2012, 15:02

...o alternativa buna pentru functia de cautare ar fi si un dialog obisnuit, folosind o clasa derivata din CDialog.

nmg
Junior
Junior
Posts: 43
Joined: 12 Jul 2007, 07:36

Re: CWnd derived class not working

Post by nmg » 06 Dec 2012, 15:15

In ceea ce priveste VC 2006, e greseala mea. Ma gandeam cum sa explic mai bine problema si n-am dat atentie. VS 6.0, asta e.

Referitor la problema, sunt constient ca exista si solutii clasice. Ceva derivat din CDialogBar sau un dialog ar merge cu siguranta dar n-ar avea acelasi "feeling".

Nu imi dau seama de ce nu merge, mai ales ca un control dintr-o clasa predefinita (edit, combo) functioneaza fara probleme.

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

Re: CWnd derived class not working

Post by Ovidiu Cucu » 06 Dec 2012, 15:48

Ca sa obtii exact acelasi feeling ca la find-ul de la Google Chrome ar trebui sa desenezi cu manuta ta si sa plasezi controale in zona non-client a frame-ului, ceea ce zic eu ca nu-i chiar simplu.
Pentru un feeling ca la, sa zicem Adobe Reader e ceva mai simplu. Faci un dialog nemodal, pe care-l lipesti in dreapta-sus a frame-ului. Nu-i greu.

De ce-ai crede ca trebuie neaparat derivat din CWnd si creat contoralele dinamic? In fond si la urma urmei, un dialog e tot o fereastra. Atata doar ca te ajuta prin faptul ca poti aranja controalele WYSIWYG la design, are de la mama lui support pentru navigare intre controale si altele asemenea care te scapa de dureri de cap pentru un container de controale. In rest, poti sa-l faci sa arate (sau sa look & feel :)) cum vrea muschii tai, ca pe oricare alta fereastra.

nmg
Junior
Junior
Posts: 43
Joined: 12 Jul 2007, 07:36

Re: CWnd derived class not working

Post by nmg » 06 Dec 2012, 16:13

ok, o sa incerc si cu un dialog nemodal. sa vedem ce iese. :)

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

Re: CWnd derived class not working

Post by Ovidiu Cucu » 06 Dec 2012, 16:37

nmg wrote:ok, o sa incerc si cu un dialog nemodal. sa vedem ce iese. :)
Ce sa iasa? Un dialog nemodal. :D
Ok, daca-ti face probleme, mai vorbim...

Post Reply