リスト3●カラー画像(24ビット)をモノクロ化する処理
モノクロ化の部分のみ示した

//R,G,B成分とモノクロ化した情報を管理するための構造体を定義
typedef struct _MyRGB
{
    int R;
    int G;
    int B;
    int Result;
} MyRGB;

void CChildView::OnEditBwC()
{
    int nMaxX = m_Image.GetWidth();   //画像の横方向の画素数(幅)
    int nMaxY = m_Image.GetHeight();  //画像の縦方向の画素数(高さ)

    //画像の全画素数分の領域を確保
    MyRGB* data
        = (MyRGB*)malloc( sizeof(MyRGB) * nMaxX * nMaxY );

    <画素を抜き出す処理・省略>

    for( int y=0; y<nMaxY; y++ )
    {
        for( int x=0; x<nMaxX; x++ )
        {
            //モノクロ変換
            data[y*nMaxX + x].Result = (data[y*nMaxX + x].R*3
                                      + data[y*nMaxX + x].G*6
                                      + data[y*nMaxX + x].B)/10;
        }
    }

    <画像に反映する処理・省略>

}