Pot sa fac un desen dinamic intr-un dialog?

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Pot sa fac un desen dinamic intr-un dialog?

Post by cristianamarie » 17 May 2010, 12:33

adi0149 wrote:Incerc sa creez controlul static facut in clasa CDiagramCtrl, in CDiagramsDlg::OnInitDialog() asa:

Code: Select all

   CPaintDC dc(this);
	m_Diagram.nID = IDC_AXIAL_DIAGRAMS;
	GetDlgItem(IDC_AXIAL_DIAGRAMS)->GetWindowRect(&m_Diagram.rect);
   ScreenToClient(&m_Diagram.rect);
	m_Diagram.Create(_T(""), WS_CHILD | WS_VISIBLE ,m_Diagram.rect,parent,IDC_AXIAL_DIAGRAMS);
compileaza, dar cand rulez si incerc sa deschid fereastra crapa:
Image
Ce cauta

Code: Select all

CPaintDC dc(this);
in OnInitDialog?


Nuclear launch detected

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: Pot sa fac un desen dinamic intr-un dialog?

Post by adi0149 » 17 May 2010, 12:47

da, se pare ca nu am nevoie de ala acolo. Dar nu stiu cum sa-l incadrez in clasa de desenat (CDiagramCtrl) ca sa stie ce device sa ia. Clasa de desenat trebuie sa aibe OnInitDialog? sau e de ajuns OnPaint si metodele de desenat (incluse in OnPaint)?
Oricum... acum trece de faza cu Create, dar imediat cum vrea sa picteze dialogul da un ASSERT aici

Code: Select all

_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const
	{ ASSERT(::IsWindow(m_hWnd)); ::GetWindowRect(m_hWnd, lpRect); }
Am modificat create astfel:

Code: Select all

m_Diagram.Create(_T(""), WS_CHILD | WS_VISIBLE ,m_Diagram.rect,reinterpret_cast<CWnd*>(this),IDC_AXIAL_DIAGRAMS);

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: Pot sa fac un desen dinamic intr-un dialog?

Post by Silviu Ardelean » 17 May 2010, 12:50

adi0149 wrote:Dar nu stiu cum sa-l incadrez in clasa de desenat (CDiagramCtrl) ca sa stie ce device sa ia. Clasa de desenat trebuie sa aibe OnInitDialog? sau e de ajuns OnPaint si metodele de desenat (incluse in OnPaint)?
Clasa de desenat nu e derivata din CDialog si nu ai ce cauta cu OnInitDialog() in ea.
Da, trebuie sa handle-uiesti OnPaint() in ea.
Te poti inspira si din exemplul lui Marius: http://www.codexpert.ro/articole.php?id=12 unde CSymbolEdit e CDiagramCtrl-ul tau.

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: Pot sa fac un desen dinamic intr-un dialog?

Post by adi0149 » 17 May 2010, 13:21

A... mersi mult. Acum a mers. :)

Post Reply