Void cdrimagestatic: showimg (CDC * DC, crect rect)
{
Cbitmap BMP;
BMP. createcompatiblebitmap (DC, m_nwidth, m_nheight );
Cbitmap * pold = NULL;
CDC memdc;
Memdc. createcompatibledc (DC );
If (m_ncolor! = NULL)
{
Entercriticalsection (& csimgcriticalsection );
BMP. setbitmapbits (sizeof (* m_ncolor) * m_nheight * m_nwidth, m_ncolor );
Leavecriticalsection (& csimgcriticalsection );
Pold = memdc. SelectObject (& BMP );
}
If (m_ndxa = 0 ))
{
Entercriticalsection (& csmycriticalsection );
Int oldmode = memdc. setbkmode (transparent );
Cpen * poldpen = memdc. SelectObject (& m_pen );
Memdc. moveTo (rect. right-m_nCurPosX, 0 );
Memdc. lineto (rect. right-m_nCurPosX, rect. Bottom );
Memdc. SelectObject (poldpen );
Memdc. setbkmode (oldmode );
Bool BBR = m_ncurposx! = M_noldposx;
If (! This-> m_blcreateline | BBR)
{
This-> m_blcreateline = true;
M_noldposx = m_ncurposx;
Invalidaterect (rect, false );
}
Memdc. moveTo (cpoint (0, 0 ));
Leavecriticalsection (& csmycriticalsection );
}
DC-> bitblt (rect. Left, rect. Top, rect. Width (), rect. Height (), & memdc, 0, 0, srccopy );
If (pold! = NULL)
{
Memdc. SelectObject (pold );
}
Memdc. deletedc ();
BMP. deleteobject ();
}