#include #include void LedDisplay::paint(void) { HBITMAP hOldBitmap; HDC hDisplayDC; HDC hMemDC; WORD firstOffset; WORD secondOffset; WORD thirdOffset; WORD fourthOffset; hDisplayDC=::GetDC(mhDisplayWindow); hMemDC=::CreateCompatibleDC(hDisplayDC); hOldBitmap=(HBITMAP)::SelectObject(hMemDC,mhFilm); positions(firstOffset,secondOffset,thirdOffset,fourthOffset); ::BitBlt(hDisplayDC,mWindowPoint.x(),mWindowPoint.y(),Width,Height, hMemDC,0,firstOffset*Height,SRCCOPY); ::BitBlt(hDisplayDC,mWindowPoint.x()+Width,mWindowPoint.y(),Width,Height, hMemDC,0,secondOffset*Height,SRCCOPY); ::BitBlt(hDisplayDC,mWindowPoint.x()+(Width*2),mWindowPoint.y(),Width,Height, hMemDC,0,thirdOffset*Height,SRCCOPY); ::BitBlt(hDisplayDC,mWindowPoint.x()+(Width*3),mWindowPoint.y(),Width,Height, hMemDC,0,fourthOffset*Height,SRCCOPY); ::SelectObject(hMemDC,hOldBitmap); ::DeleteObject(hMemDC); ::ReleaseDC(mhDisplayWindow,hDisplayDC); } void LedDisplay::positions(WORD &firstOffset,WORD &secondOffset,WORD &thirdOffset,WORD &fourthOffset)const { String numberString; if(mHasSpecialChar) { if(BlankChar==mCurrentSpecialChar) firstOffset=secondOffset=thirdOffset=fourthOffset=OffsetBlankChar; else firstOffset=secondOffset=thirdOffset=fourthOffset=OffsetDashChar; } else { ::sprintf(numberString,"%04d",mCurrentNumber); firstOffset=charPosition(*(numberString)); secondOffset=charPosition(*(numberString+1)); thirdOffset=charPosition(*(numberString+2)); fourthOffset=charPosition(*(numberString+3)); } }