C++MFCで変数の値が上書きされてしまいます。
VC++でjpgを読み込んで縮小してモノクロに表示するプログラムを作成しています。画像を走査するときに、あとで使う予定なのでグローバル変数pixに座標と画像の番号と濃度値を保存して、縮小されたモノクロ画像はちゃんと作画されるのですが(縮小化を行う関数内では濃度値も正しい)、別の関数で濃度値を参照すると値がすべて「0」になります。アドバイスいただけたら幸いです。
ヘッダー内での宣言
public:
short int pix[490464];
メインダイアログのソース抜粋
void CxxxxxxxxxDlg::Load(int pictbox);
CImage img_org, img_little;
CBitmap *myBMP;
CDC *pDC = m_pict11.GetDC();
CDC myDC;
int x, y;
COLORREF col;
CString buf;
int thr;
m_thrmono.GetWindowTextA(buf);
thr = atoi(buf);
img_org.Load(jpgファイル絶対パス);
img_little.Create(234, 160, 24, 0);
for(y=0; y<(img_little.GetHeight()); y++){
for(x=0; x<(img_little.GetWidth()); x++){
col = img_org.GetPixel((int)(x*3),(int)(y*3));
pix[x,y,pictbox] = GetRValue(col);
if(pix[x,y,pictbox]>thr){
pix[x,y,pictbox] = 255;
}else{
pix[x,y,pictbox] = 0;
}
img_little.SetPixel(x, y, RGB((pix[x,y,pictbox]),(pix[x,y,pictbox]),(pix[x,y,pictbox])));
buf.Format("x:%d y:%d pix:%d", x, y, pix[x,y,pictbox]);
m_display.AddString(buf);
}
}
(ピクチャーコントロールへの作画)
}
int CyyyyyyyyyyyDlg::Recog(int pictbox){
CString buf;
for(int y=0; y<160; y++){
for(int x=0; x<234; x++){
buf.Format("pict%d x:%d y:%d -> %d", pictbox, x, y, pix[x,y,pictbox]);
m_display.AddString(buf);
}
}
return distance;
}
上の関数でリストボックス(コントロール変数m_display)には0か255が入っているのですが、下の関数ではリストにはすべて0になってしまいます。