|
|
Hi, i wrote some codes so that in a MFC dialog based application, i'm able to display a triangle(drawn using CPen and MoveTo and LineTo) in the custom control when i click a button. May i know how to do it correctly? The codes that i wrote cannot execute although it was able to complile n link without error,
thanks
|
|
|
|
|
|
i'm using VC++6. the code generate no error while compiling but when i try to execute it, it does nothing. What may cause this to happen?
|
|
|
|
|
Can you show your code that you writted for triangle and it doesnt work?
|
|
|
|
|
Here is the code..but this is oni will draw lines.
////////this is testctrl.cpp//////////////////
void testctrl::OnPaint()
{
CPaintDC dc(this); // device context for painting
}
//////////////////////////////////
// Do not call CPropertyPage::OnPaint() for painting messages
void testctrl::Draw(CDC *pDC)
{
CRect rect;
CPen penBlack;
penBlack.CreatePen(PS_SOLID, 0, RGB(0,255,0));
CPen* pOldPen=pDC->SelectObject(&penBlack);
GetClientRect(rect);
int vectorValues[] = {1,1,0,0,1,1}; // for testing
int m_currentXCoord=0;
int width=10;
for(int i = 0; i < 19; i++)
{
if(vectorValues[i] == 1)
{
pDC->MoveTo(m_currentXCoord,10);
pDC->LineTo(m_currentXCoord+width,10);
m_currentXCoord = m_currentXCoord + width;
}
else
{
pDC->MoveTo(m_currentXCoord,20);
pDC->LineTo(m_currentXCoord+width,20);
m_currentXCoord = m_currentXCoord + width;
} // a 0 so only update X coordinate
}
pDC->SelectObject(pOldPen);
}
BOOL testctrl::OnEraseBkgnd(CDC* pDC)
{
// To avoid flickering
return CWnd::OnEraseBkgnd(pDC);
// return TRUE;
}
/////////////////////////////////////////////////
/////////////this is testdlg.cpp/////////////////////
void CTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CDC dc;
m_custom.Draw(&dc);
UpdateData(FALSE);
UpdateDialogControls(this,FALSE);
}
void CTestDlg::OnUpdateStart(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TRUE);
}
/////////////////////////////////////////////////
thanks for ur help
|
|
|
|
|
CDC dc;
m_custom.Draw(&dc);
what happens if you use of this code instead above code
<br />
CDC *dc;<br />
dc=GetDC();<br />
m_custom.Draw(dc);<br />
|
|
|
|
|
cyn8 wrote: /////////////this is testdlg.cpp/////////////////////
void CTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CDC dc;
m_custom.Draw(&dc);
UpdateData(FALSE);
UpdateDialogControls(this,FALSE);
}
You are passing uninitialized CDC object to Draw . What you are doing ? It should call this way in first place. You need to use UpdateWindow like function in combination with Invalidate .
-- modified at 2:21 Tuesday 19th December, 2006
-- modified at 5:04 Tuesday 19th December, 2006
|
|
|
|
|
I think he forgots to set dc
|
|
|
|
|
|
Hello everyone,
I am wondering how to reduce the footprint of a binary build (C/C++) program generated by gcc.
1. Any ideas of reduce the footprint of a debug version build?
2. Any ideas of reduce the footprint of a release version build?
I think some linker or compiler options may help, what are they? Any other ideas to reduce footprint?
thanks in advance,
George
|
|
|
|
|
George_George wrote: I am wondering how to reduce the footprint of a binary build (C/C++) program generated by gcc
Don't use gcc. Even if you optimize for size, it will still be pretty bloated compared to other C++ compilers...
If you try to write that in English, I might be able to understand more than a fraction of it. - Guffa
|
|
|
|
|
Thanks PaulC1972!
Do you have more detailed comments or advices (for example, why gcc will generate larger code)? Or some reference documents to read?
regards,
George
|
|
|
|
|
|
Very good reference, thanks PaulC1972!
regards,
George
|
|
|
|
|
No problem, George. After this thread started, I ended up rereading those articles I referred you to
|
|
|
|
|
Wow... Could you briefly describe the main idea of the articles in your words? Articles are long...
regards,
George
|
|
|
|
|
For what purpose do we need VALIDATE and INVALIDATE flags in RedrawWindow()?
What is the difference between them?
Thanks & Regards,
Suman
-- modified at 23:02 Monday 18th December, 2006
|
|
|
|
|
InvalidateRect and friends just marks a region of a window as "dirty" and it will be repainted at some time in the future. RedrawWindow causes a redraw to happen on the spot; even so, depending on the flags passed, only the "dirty" regions may be redrawn.
Steve
|
|
|
|
|
rp_suman wrote: For what purpose do we need VALIDATE and INVALIDATE
Invalidate flags adds specified windows rect , regn to window to be repainted.
Validate flags removes specified windows rect , regn from window to be repainted.(In short it removes dirty flag).
-- modified at 0:06 Tuesday 19th December, 2006
|
|
|
|
|
Thanks for great help from you both!!
Thanks & Regards,
Suman
|
|
|
|
|
RDW_NOCHILDREN flag should be used with which one, RDW_INVALIDATE or RDW_VALIDATE.
Is it meaningful to use with RDW_INVALIDATE.
Thanks & Regards,
Suman
|
|
|
|
|
rp_suman wrote: Is it meaningful to use with RDW_INVALIDATE
Yes, ofcourse.
If you have new question, start new thread, users here usually doesn't turn back to to old posts( but I do in this case ) , unless got any email notification.
|
|
|
|
|
Thanks for help!
Wishing you a Happy New Year!!
Thanks & Regards,
Suman
|
|
|
|
|
I am using MFC. I want to add a tab control in an existing dialog box. I found this example:
http://www.codeproject.com/useritems/Simple_Tab_Control.asp
but it seems that you have to create a window for each tab, with the main Window having just the tab control. How can I add a tab control without having to redo what I already have?
|
|
|
|