Try Create Texture

Hi all
when I try create the Textute http://www.cityintherain.com/howtotex.html ,I reiceve a white rectangle ,I don’n know what happen with my code, I think I miss something , can you help me. this is my code
void SetTextureFilter(int newfilter)
{
if (newfilter >= 0 && newfilter <= 1)
{
Filter = newfilter;
}
}

void LoadBitmapTexture(int id)
{
HBITMAP hBmp = NULL;

    hBmp = (HBITMAP) ::LoadImage(NULL, 
            MAKEINTRESOURCE(id), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);

    //get info about the bitmap
    BITMAP BM;
    ::GetObject(hBmp, sizeof(BM), &BM);

    //tell OpenGL to ignore padding at ends of rows
    glPixelStorei(GL_UNPACK_ALIGNMENT, 4);

    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

    if (Filter ==TF_NONE) 
    {
            glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
            glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    }
    else
    {
            glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
            glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    }

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, BM.bmWidth, BM.bmHeight,
            0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BM.bmBits);

    DeleteObject((HGDIOBJ) hBmp);  //avoid memory leak (Windows)

}
void display()
{
glEnable(GL_TEXTURE_2D);
SetTextureFilter(TF_NONE);
LoadBitmapTexture(IDB_BITMAP1);

    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
    //use GL_MODULATE instead of GL_REPLACE if lighting is being used

    //draw a square with specified texture coordinates

    float xvals[] = {0.0, 0.0, 40.0, 40.0};
    float yvals[] = {40.0, 0.0, 0.0, 40.0};

    float svals[] = {0, 0, 1, 1};
    float tvals[] = {1, 0, 0, 1};

    glPolygonMode(GL_FRONT_AND_BACK, GL_POLYGON);
    glBegin(GL_POLYGON);
            for (int i=0; i &lt; 4; i++)
            {
                    glVertex2f(xvals[i], yvals[i]);
                    glTexCoord2f(svals[i], tvals[i]);
            }
    glEnd();
	glFlush();

}

int main(int argc, char* argv[]){

glutDisplayFunc(display);

}