|
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?
|
|
|
|
|
The Windows tab common control provides the tabs but you still need to provide a window for each
tab.
What is it you are trying to do by adding a tab control without additional windows?
|
|
|
|
|
Well, not necessary WITHOUT additional windows, but place my existing dialog window inside a tab.
The reason I want to do that is because my app really will be performing the task of two related apps. So instead of having two seperate executables, I was thinking use two tabs, one for each "app".
|
|
|
|
|
Cool. You could make the dialogs modeless child dialogs if they aren't already (they could
even be the same class).
Instead of making the tab control a child of the dialog, make it a child of a simple frame
window. The frame window can hold the tab control and the dialogs and handle all the
associated resizing/repositioning. That gives you the option of a common toolbar and status
bar as well.
Just a thought.
|
|
|
|
|
how do I change my existing dialog (which is the main dialog window for the project) to a child? And how to I set another window (frame window) to be the new parent of the project?
Thanks
Also, would it be necessary for the main window to have OnInitDialog, OnSysCommand, OnPaint, and OnQueryDragIcon. In which case, I would have to add those functions in the new main window, and remove them from what is now the child window? And also transfering the system menu (including the about...)?
-- modified at 22:10 Monday 18th December, 2006
|
|
|
|
|
It'll just take a little rearranging....not too much code.
acerunner316 wrote: how do I change my existing
dialog (which is the main dialog window for the project) to a child? And how to I set another
window (frame window) to be the new parent of the project?
In your application class' InitInstance() override you probably have something like this:
CMyMainDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
...
You'd replace that with something like:
CMainFrame* pFrame = new CMainFrame;
if (!pFrame)
return FALSE;
m_pMainWnd = pFrame;
if (!Create(NULL, _T("Window Name"),
WS_VISIBLE|WS_OVERLAPPEDWINDOW,
CRect(50,50,400,400), NULL, NULL, 0, NULL))
return FALSE;
...
CMainFrame would be a CFrameWnd-derived class. You can override CFrameWnd::OnCreateClient() and
in your implementation create the tab window and the two modeless dialogs.
All the necessary code for managing a tab control will need to be added as well.
acerunner316 wrote: Also, would it be necessary for
the main window to have OnInitDialog, OnSysCommand, OnPaint, and OnQueryDragIcon. In which case,
I would have to add those functions in the new main window, and remove them from what is now the
child window? And also transfering the system menu (including the about...)?
The main window has OnCreateClient(). Instead of OnInitDialog there's OnCreate() (handler for
WM_CREATE). Your dialog classes would stay the same. They still need their OnInitDialog()
overrides to initialize their controls and whatever else you do there. Same with OnPaint.
OnQueryDragIcon., OnSysCommand, and the about-window stuff would probably move to the frame
window class.
|
|
|
|