Page 2 of 2

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

Posted: 17 May 2010, 12:33
by cristianamarie
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?

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

Posted: 17 May 2010, 12:47
by adi0149
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);

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

Posted: 17 May 2010, 12:50
by Silviu Ardelean
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.

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

Posted: 17 May 2010, 13:21
by adi0149
A... mersi mult. Acum a mers. :)