In your first response you mentioned GDI calls.
There are few flaws in it.
1. The first and most important thing is that the drawing part of this
code should be in the OnPaint of the child control (IDC_PICT), and not
the dialog. Because if it is not in the OnPaint of the control, then
when the dialog is covered by another window it will not repaint itself
when it is uncovered.
2. The fact that it's not scaleable with the data might become a problem
later, only 10 items......
3. It is not releasing the DC of the child control, which causes a
resource leak.
4. It is not scalable when it comes to the size of the control.
5. It doesn't have any labels or axes markers.
Otherwise, if you like it feel free to use it.
AliR.
"Kahlua" <kahlua@right.here> wrote in message
news:G%7jj.10188$ac7.2274@trndny03...
"Kahlua" <kahlua@right.here> wrote in message
news:zb6jj.7554$6F6.4662@trndny09...
Can anyone show me how to display a bargraph within my mfc app?
Or direct me to the resource to do it.
Lets say I have an unsigned char string of 16bytes of data ranging in
value from 01h to FFh.
I want to display a bargraph with the 16 vertical bars reflecting the
data value.
Height and width of bargraph not important at this time.
Thanks in advance.
I found this simple code that seems to work ok.
Anything wrong with it?
Why should I not use it?
void CBar1Dlg::OnBar()
{
unsigned char bar[10];
int numbars=10;
int a,b,c,d,i;
for (i=0;i<10;i++) //initialize
bargraph values for testing
bar[i]=i*10;
CRect cr;
CBrush grn(RGB(100,255,100));
c=15,b=5; //initialize
positions
GetDlgItem(IDC_PIC)->GetClientRect(cr); //get drawing area of
PIC
CWnd* pWnd=GetDlgItem(IDC_PIC);
pControlDC=pWnd->GetDC();
d = (cr.Width()-20)/numbars;
pControlDC->SelectObject(wht); //draw background
pControlDC->Rectangle(0,0,cr.Width(), cr.Height());
pControlDC->SelectObject(grn); //select color
of bar
for (b=0; b<numkeys; b++)
{
a = bar[b];
pControlDC->Rectangle (c, cr.Height(), c+10, cr.Height()-a);
c+=d;
}
pControlDC->SelectStockObject(BLACK_BRUSH);
}