Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

CDialog na CFrameWnd (MFC)

[es] :: C++ programiranje :: CDialog na CFrameWnd (MFC)

[ Pregleda: 348 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

woodstock85

Član broj: 179121
Poruke: 4
*.rcub.bg.ac.yu.



Profil

icon CDialog na CFrameWnd (MFC)20.04.2008. u 16:20

Postovani

Da li bi neko znao da mi kaze kako da uradim sledecu stvar.
Imam klasu koja nasledjuje CDialog
Code:
class dlgTest : public CDialog
{
public:
    dlgTest();   // standard constructor
    enum { IDD = IDD_DIALOG1 };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

protected:
    virtual void OnOK();
    DECLARE_MESSAGE_MAP()
};


Objekat te klase imam u klasi class CMainFrame : public CFrameWnd, uspela sam da zalepim dialog na formu, ali nemam nikakvu funkcionalnost.
Dialog na sebi ima samo dugme OK i treba da ispise poruku.


Code:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){
...

RECT rect;
    GetClientRect(&rect);
    ScreenToClient(&rect);
    dlg.SetWindowPos(this, rect.left+250, rect.top+250, 300, 200,SWP_NOZORDER|SWP_SHOWWINDOW);
    dlg.ShowWindow(SW_SHOW);

gde je dlg objekat klase dlgTest.


Dialog ima CHILD style...

Kako to da sredim?

Hvala!!!

[Ovu poruku je menjao woodstock85 dana 20.04.2008. u 17:34 GMT+1]
20.04.2008. u 16:20 

deerbeer
nikola džuverović
xemicomputers

Član broj: 174418
Poruke: 300
*.adsl-a-1.sezampro.yu.

Sajt: www.dynamicinfoscreen.com


Profil

icon Re: CDialog na CFrameWnd (MFC)21.04.2008. u 09:14
Citat:

@woodstock85
Objekat te klase imam u klasi class CMainFrame : public CFrameWnd, uspela sam da zalepim dialog na formu, ali nemam nikakvu funkcionalnost.
Dialog na sebi ima samo dugme OK i treba da ispise poruku

Ajde malo pojasni ovo (uspela sam da zalepim dialog na formu al nemam nikakvu funkcionalnost) ..
Kako sam shvatio tebi treba dialog koji ce biti uvek na MainFrame-u ili tvom DocumentView-u ?
Ako hoces floating window onda tom dijalogu daj stil WS_EX_TOOLWINDOW i kreiraj ga u override-u tvog View-a "OnInitialUpdate"
Code:

void CTvojView::OnInitialUpdate()
{
dlgTest.Create(IDD_DIALOG1,this) ; 
dlgTest.SetWindowLong(GWL_EXSTYLE,WS_EX_TOOLWINDOW) ; 

}


Ako hoces da bude dock-ovan kao Toolbar ili Statusbar
onda moras da nasledis tvoj dijalog iz CControlBar (http://msdn2.microsoft.com/en-us/library/946eh8h7(VS.80).aspx).


jelenko pilenkovac strikes again ...
21.04.2008. u 09:14 

woodstock85

Član broj: 179121
Poruke: 4
*.rcub.bg.ac.yu.



Profil

icon Re: CDialog na CFrameWnd (MFC)21.04.2008. u 18:17
Meni treba dijalog na formi da se ne moze pomerati, al da ima funkcionalnost.
Odnosno svaki klik na njega se ponasa kao da klinem na sliku(dugme nema funkcionalnost).

Sto se tice tvog prvog predloga isprobala sam ga al mi javlja gresku:

error C2039: 'SetWindowLongA' : is not a member of 'dlgTest'

koristim vs6

Hvala!
21.04.2008. u 18:17 

deerbeer
nikola džuverović
xemicomputers

Član broj: 174418
Poruke: 300
*.adsl-1.sezampro.yu.

Sajt: www.dynamicinfoscreen.com


Profil

icon Re: CDialog na CFrameWnd (MFC)21.04.2008. u 19:20
Citat:

error C2039: 'SetWindowLongA' : is not a member of 'dlgTest'

Pardon ..moja greska . SetWindowLong je dostupan samo kroz API poziv
Code:

DWORD dwStyle = GetWindowLong(dlgTest.m_hWnd,GWL_EXSTYLE) ; 
::SetWindowLong(dlgTest.m_hWnd,GWL_EXSTYLE,dwStyle  | WS_EX_TOOLWINDOW) ; 

Medjutim nije ti ni ovo resenje jer dobijas floating window ..
Jedino resenje je da nasledis CControlBar al u tom slucaju pozicija prozora ti je ogranicena na neku od ivica glavnog frame-a (top,left,bottom,right) .
Evo jednog primera : http://www.vckbase.com/english/code/docking/mrcext.shtml.htm
To sto nemas "funkcionalnost" je zbog toga sto windows poruke ne stizu do tog dijaloga.CFrameWnd kao i CView ne moze da ima modalni child prozor.

Ako ne zelis da ti prozor bude dock-ovan uz neku ivicu i ako bas nemas potrebu za Document/View konfiguracijom napravi "MFC Dialog based" aplikaciju u wizardu i onda napravi child prozor za glavnu formu ...

BTW .. Moj savet ti je da batalis VS6-icu i da predjes na nesto novije ....

[Ovu poruku je menjao deerbeer dana 21.04.2008. u 20:42 GMT+1]
jelenko pilenkovac strikes again ...
21.04.2008. u 19:20 

woodstock85

Član broj: 179121
Poruke: 4
*.rcub.bg.ac.yu.



Profil

icon Re: CDialog na CFrameWnd (MFC)21.04.2008. u 19:54
VS6 nisam birala, vec je nametnuto okruzenje.Problem koji sam navela je u pojednostavljenom primeru, a imam isti u okviru veceg projekta.
Citat:
Ako ne zelis da ti prozor bude dock-ovan uz neku ivicu i ako bas nemas potrebu za Document/View konfiguracijom napravi "MFC Dialog based" aplikaciju u wizardu i onda napravi child prozor za glavnu formu ...

Ovaj vid resenja ne bi znacio.

Ja imam utisak ili da sam postavila pogresno pitanje ili da se ne razumemo :)

Imam dijalog koji treba bukvalno da zalepim na formu. Ne treba da se krece. Imam dugme na njemu koje trebam da osposobim, odnosno treba da obezbedim da stizu poruke do njega, bas kao sto ste naveli. Ne znam kako to da uradim?

Hvala!
21.04.2008. u 19:54 

deerbeer
nikola džuverović
xemicomputers

Član broj: 174418
Poruke: 300
*.adsl-1.sezampro.yu.

Sajt: www.dynamicinfoscreen.com


Profil

icon Re: CDialog na CFrameWnd (MFC)21.04.2008. u 20:43
Citat:

Ja imam utisak ili da sam postavila pogresno pitanje ili da se ne razumemo :)

A ja imam utisak da ne citate (kad vec persirate :-) ) sve sto sam napisao :)

CFrameWnd kao i CView ne moze da ima modalni child prozor (nasledjen od CDialog-a ).

Na ovom linku je sve lepo objasnjeno kako se to radi : http://www.vckbase.com/english/code/docking/mrcext.shtml.htm i moze da se skine i source code. Ako vam i ovo nije resenje onda umesto CView koristite CFormView - http://msdn2.microsoft.com/en-us/library/353dcby6(VS.71).aspx


[Ovu poruku je menjao deerbeer dana 21.04.2008. u 22:15 GMT+1]
jelenko pilenkovac strikes again ...
21.04.2008. u 20:43 

woodstock85

Član broj: 179121
Poruke: 4
*.rcub.bg.ac.yu.



Profil

icon Re: CDialog na CFrameWnd (MFC)21.04.2008. u 22:37
E ma nisam mislila nista lose,nego sam mahinalno napisala (vam).
Hvala ti u svako slucaju,definitivno moram to da pregledam.
Pozdrav!
21.04.2008. u 22:37 

[es] :: C++ programiranje :: CDialog na CFrameWnd (MFC)

[ Pregleda: 348 | Odgovora: 6 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.