Forum » Programiranje » MFC, CHtmlView, CDockablePane in 100 EUR
MFC, CHtmlView, CDockablePane in 100 EUR
d156 ::
Evo. Imam nov problem. Poskusam embeddat CHtmlView v CDockablePane. Ker sem porabil ze nekaj casa na problemu, sem se odlocil, da je cas za kaksno zunanjo pomoc. Tisti, ki mi pomaga z resitvijo, dobi 100 EUR.
Problem sem opisal ze na tem forumu, tako da podajam samo link:
http://www.experts-exchange.com/Program...
VS2008 project je pa tukaj: http://www.kulone.com/contrib/crashproj...
Uglavnem program crasha, ko ga zaprem.
Problem sem opisal ze na tem forumu, tako da podajam samo link:
http://www.experts-exchange.com/Program...
VS2008 project je pa tukaj: http://www.kulone.com/contrib/crashproj...
Uglavnem program crasha, ko ga zaprem.
snow ::
Mogoče spraviš tvoj problem sem: http://www.topcoder.com/wiki/display/tc...
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
d156 ::
Mogoče spraviš tvoj problem sem: http://www.topcoder.com/wiki/display/tc...
Mogoce, ceprav zgleda precej prevec web. Ce bi le bilo bolj MFC ...
Ampak hvala za idejo, bom se mal pogledal, ce imajo kaksne bolj MFC specificne projekte ...
BlueRunner ::
OK. Odgovor gre tako:
- V MFC-ju živijo CDocument-CView pari v svoji lastni hirearhiji, ki izvira iz CFrameWnd.
- V CDockablePane si uporabil CHtmlView, ki je naslednik razreda CView, pri temu pa je CDockablePane izven CFrameWnd hirearhije.
- Posledica je, da pride pri destrukciji do napake, ker se objekti uničujejo malo drugače, kot se bi sicer.
- Nekaj malega o tej splošni težavi najdeš tukaj. Zapletel si se samo v temu, da nisi ugotovil, da to prizadane naslednike CView in ne samo CHtmlView.
Možni rešitvi sta dve. Ena je, da v CDockablePane ne vstaviš neposredno CView, ampak vstaviš svojega naslednika CFrameWnd, nato pa v tem CFrameWnd uporabiš CHtmlView, ki ga potrebuješ. Ta pristop je uporaben, če dejansko potrebuješ in želiš uporabiti CDocument-CView par.
Druga rešitev je, da narediš kopijo kode za razred CHtmlView in ga namesto iz CView izpelješ iz CWnd. Ta pristop je uporaben, če te funcionalnost, ki jo ponuja CDocument ne zanima, temveč bi rad samo prikazoval HTML z čim manj zapletanja.
Primer VS2008 projekta, kjer sem ti razred CHtmlCtrl že pripravil, lahko preneseš od tukaj. Ta razred pa lahko potem uporabiš tudi znotraj katerega koli drugega razreda v MFC. Recimo na CDialog, CFormView, ker več ni vezan na CFrameWnd.
Podatke za nakazilo dobiš na ZS.
- V MFC-ju živijo CDocument-CView pari v svoji lastni hirearhiji, ki izvira iz CFrameWnd.
- V CDockablePane si uporabil CHtmlView, ki je naslednik razreda CView, pri temu pa je CDockablePane izven CFrameWnd hirearhije.
- Posledica je, da pride pri destrukciji do napake, ker se objekti uničujejo malo drugače, kot se bi sicer.
- Nekaj malega o tej splošni težavi najdeš tukaj. Zapletel si se samo v temu, da nisi ugotovil, da to prizadane naslednike CView in ne samo CHtmlView.
Možni rešitvi sta dve. Ena je, da v CDockablePane ne vstaviš neposredno CView, ampak vstaviš svojega naslednika CFrameWnd, nato pa v tem CFrameWnd uporabiš CHtmlView, ki ga potrebuješ. Ta pristop je uporaben, če dejansko potrebuješ in želiš uporabiti CDocument-CView par.
Druga rešitev je, da narediš kopijo kode za razred CHtmlView in ga namesto iz CView izpelješ iz CWnd. Ta pristop je uporaben, če te funcionalnost, ki jo ponuja CDocument ne zanima, temveč bi rad samo prikazoval HTML z čim manj zapletanja.
Primer VS2008 projekta, kjer sem ti razred CHtmlCtrl že pripravil, lahko preneseš od tukaj. Ta razred pa lahko potem uporabiš tudi znotraj katerega koli drugega razreda v MFC. Recimo na CDialog, CFormView, ker več ni vezan na CFrameWnd.
Podatke za nakazilo dobiš na ZS.
d156 ::
OK. Odgovor gre tako:
- V MFC-ju živijo CDocument-CView pari v svoji lastni hirearhiji, ki izvira iz CFrameWnd.
- V CDockablePane si uporabil CHtmlView, ki je naslednik razreda CView, pri temu pa je CDockablePane izven CFrameWnd hirearhije.
- Posledica je, da pride pri destrukciji do napake, ker se objekti uničujejo malo drugače, kot se bi sicer.
- Nekaj malega o tej splošni težavi najdeš tukaj. Zapletel si se samo v temu, da nisi ugotovil, da to prizadane naslednike CView in ne samo CHtmlView.
Možni rešitvi sta dve. Ena je, da v CDockablePane ne vstaviš neposredno CView, ampak vstaviš svojega naslednika CFrameWnd, nato pa v tem CFrameWnd uporabiš CHtmlView, ki ga potrebuješ. Ta pristop je uporaben, če dejansko potrebuješ in želiš uporabiti CDocument-CView par.
Druga rešitev je, da narediš kopijo kode za razred CHtmlView in ga namesto iz CView izpelješ iz CWnd. Ta pristop je uporaben, če te funcionalnost, ki jo ponuja CDocument ne zanima, temveč bi rad samo prikazoval HTML z čim manj zapletanja.
Primer VS2008 projekta, kjer sem ti razred CHtmlCtrl že pripravil, lahko preneseš od tukaj. Ta razred pa lahko potem uporabiš tudi znotraj katerega koli drugega razreda v MFC. Recimo na CDialog, CFormView, ker več ni vezan na CFrameWnd.
Podatke za nakazilo dobiš na ZS.
Koncno se je najdu junak :)
Sprobal tvojo resitev, in dela! :)
Se tudi drugace ukvarjas s win32, mfc programiranjem... ?
lp, Damjan
Zgodovina sprememb…
- spremenil: d156 ()
BlueRunner ::
Včasih sem se, sedaj pa poklicno več nisem programer. Tako, da tozadevno samo počivam na lovorikah stare slave in se občasno preprekam o teoriji in filozofiji programiranja ;)
d156 ::
No ja, mogoce te prepricam se za kaj. Sedaj imam ze nov problem, tokrat je nagrada 500 eur. Ubistvu dva popoldneva dela :)
Bom napisal vec o problemu bodisi danes ali kaksen dan kasneje...
Bom napisal vec o problemu bodisi danes ali kaksen dan kasneje...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | MFC, deskband/tray in 500 EUROddelek: Programiranje | 1499 (1101) | d156 |
» | c++ zapis funkcijeOddelek: Programiranje | 1194 (1117) | Vesoljc |
» | VS C++Oddelek: Programiranje | 2193 (1225) | Vesoljc |
» | Win32 API in C++Oddelek: Programiranje | 1562 (1433) | Monster |
» | OpenGL orr v ansi cOddelek: Programiranje | 1637 (1425) | igor12 |