hi thanks for replying. well somehow i have edited the codes over time. i will update to u about it now.

Code:

//**************************************************************************************//
void CLEO_MedivisionView::OnUpdateToolsHistogram(CCmdUI *pCmdUI)
{
// TODO: Add your command update UI handler code here

if (fileopen) {
pCmdUI->Enable(true);
}
else {
pCmdUI->Enable(false);
}
}
void CLEO_MedivisionView::OnToolsHistogram()
{
// TODO: Add your command handler code here
int x_tick, y_tick;
int j;
int a_loop, b_loop;
int k, t, f, i;
int x;
int q;
unsignedint intMFC;
unsignedint intMFC1;
unsignedint intMFC2;
unsignedshort array1[256];
char c[10];
char p[10];
char l[10];
CString MFCString;
//unsigned short array1[65535];
pDC = GetDC(); //OnDraw member function
hdc = pDC->GetSafeHdc();
CPen aPen;
aPen.CreatePen(PS_SOLID, 2, RGB(255, 225, 225));
CPen* pOldPen = pDC->SelectObject(&aPen);

pDC->MoveTo(600,400); //drawing of x-axis
pDC->LineTo(920,400);
pDC->MoveTo(920,400);
pDC->LineTo(915,405);
pDC->MoveTo(920,400);
pDC->LineTo(915,395); //drawing of x-axis

x_tick = 600; //declaring constants
y_tick = 400;
for(j=1; j<=10; j++) //control the loop so that it draws ticks every 30 pixels
{
pDC->MoveTo(x_tick+(j*30),y_tick-5); 
pDC->LineTo(x_tick+(j*30),y_tick+5); 
}
pDC->MoveTo(600,400); //drawing of y-axis
pDC->LineTo(600,80);
pDC->MoveTo(600,80);
pDC->LineTo(605,85);
pDC->MoveTo(600,80);
pDC->LineTo(595,85); //drawing of y-axis
for(t=1; t<=10; t++) //control the loop so that it draws ticks every 30 pixels
{
pDC->MoveTo(x_tick-5,y_tick-(t*30)); 
pDC->LineTo(x_tick+5,y_tick-(t*30));
}
intensity= "Intensity"; //labelling of x-axis
SetBkColor(hdc, RGB(0, 0, 0));
SetTextColor(hdc, RGB(255, 255 ,255 ));
TextOut(hdc, 930, 390, LPCTSTR(intensity), 9);
pixels = "Pixels"; //labelling of y-axis
SetTextColor(hdc, RGB(255, 255 ,255 ));
TextOut(hdc, 580, 55, LPCTSTR(pixels), 6); 
numeric = "0"; //number zero (universal)
SetTextColor(hdc, RGB(95, 158, 160));
TextOut(hdc, 585, 400, LPCTSTR(numeric),1);
intMFC = 0; //declaring constants
a_loop = 595;
for(k=1; k<=5; k++) //for every two ticks, draw legend of +52 each time it loops
{ 
intMFC = intMFC+52;
itoa(intMFC,c,10);
CString MFCString;
MFCString = c;
if(intMFC<100) //if number is XX then just show 2 digits
{
test = c;
SetTextColor(hdc, RGB(95, 158 ,160));
TextOut(hdc, a_loop+(k*60), 405, LPCTSTR(test), 2);
}
elseif(intMFC>=100) //if number is XXX then show 3 digits
{
test = c;
SetTextColor(hdc, RGB(95, 158, 160));
TextOut(hdc, a_loop+(k*60), 405, LPCTSTR(test), 3);
}
}
intMFC1 = 0; //declaring of constants
intMFC2 = 0;
b_loop = 392;

if (no_of_rows == 256 && no_of_cols == 256) // initiate if image its by 256*256
{
for(f=1; f<=5; f++) // for 5-ticks axis
{ 
intMFC1 = (((256 * 256)/5)+0.3) * f; // calculate each of the 5 marking is +13107
itoa(intMFC1,p,10); 
CString MFCString;
MFCString = p;
test1 = p;
SetTextColor(hdc, RGB(95, 158 ,160));
TextOut(hdc, 540, b_loop-(f*60), LPCTSTR(test1), 5); // type casting
} 
}
elseif (no_of_rows == 512 && no_of_cols == 512) // if image is 512*512 run this
{
for(q=1; q<=5; q++) // for 5-ticks axis 
{ 
intMFC2 = (((512 * 512)/5)+0.8) * q; // to calculate each marking is +52428
itoa(intMFC2,l,10); 

MFCString = l; 
if(intMFC2<100000) //'if' statement used because if digit is less
//than 100000, it shows crap at the last digit position
{
test2 = l;
SetTextColor(hdc, RGB(95, 158 ,160));
TextOut(hdc, 540, b_loop-(q*60), LPCTSTR(test2), 5); 
}
elseif(intMFC2>=100000) //if digit is more or equal to 100000, do this
{
test2 = l;
SetTextColor(hdc, RGB(95, 158, 160));
TextOut(hdc, 540, b_loop-(q*60), LPCTSTR(test2),6);
}
}
}

//count pixel intensity

//'for' loop couting from 0 to 255 which simply zeros out each element in array1 to prepare the array to do the count of the bytes in the image
for (i=0;i<255;i++) 
{
array1[i]=0;
}
if (no_of_rows == 512 && no_of_cols == 512)
{
//'for' loop to loop through the bytes of the image
for (i=0; i<262143; i++)
{ 
array1[image[i]]++;
}
}
elseif (no_of_rows == 256 && no_of_cols == 256)
{
for (i=0; i<65535; i++)
{
array1[image256[i]]++;
}
}



pDC->MoveTo( 600, 400);
for (i=1; i<255; i++)
{
pDC->MoveTo( 600 + i, 400);
pDC->LineTo( 600 + i, Y );
}
}


the code in green and red is the new addition to it and its supposed to draw lines for the number of pixels in respect to its intensity value ie how many pixels has a value of 20. so this code is somewhat 'approved' from my supervisor. the only thing is that, the code line in red needs to be changed. im not too sure what i should input on the position 'Y'. i can try a few errors but i get my app to crash at times. so maybe u can help me on what to replace the Y with. thanks in advance!