- Getting a bitmap to change colour when a limit is reached
- CFont* def_font = argDC->SelectObject(&m_Font);
- CString csText;
- int StartPos = WindowRect.Width()/5;
- CRect TextRect(StartPos, WindowRect.top + 5, StartPos + 100, WindowRect.top + 35);
- csText.Format(_T("%.2ft"), argSystemDataPtr->GetMaxSWL());
- int32_t iSWLDigits = csText.GetLength();
- if (iSWLDigits < m_SWLDigitsNum)
- {
- m_RedPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_RED);
- //argDC->FillSolidRect(TextRect, RGB(255, 255, 255));
- }
- m_SWLDigitsNum = iSWLDigits;
- argDC->DrawText(csText, TextRect, DT_LEFT);
- CRect PanelRect1, PanelRect2;
- CRect PanelsRect(WindowRect);
- const int BarHeight = 30;
- PanelsRect.OffsetRect(0,m_bShowTitleBar?BarHeight:-BarHeight);
- PanelsRect.DeflateRect(0,m_bShowTitleBar?BarHeight*-1:BarHeight);
- m_GreenPanelBitmap.Detach();
- m_GreenPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_GREEN);
- CBitmap* pOld = memDC.SelectObject(&m_GreenPanelBitmap);
- BITMAP bits;
- m_GreenPanelBitmap.GetObject(sizeof(BITMAP),&bits);
- PanelRect1.SetRect(0,PanelsRect.top, PanelsRect.right /2 , PanelsRect.Height()/3);
- PanelRect2.SetRect(0,PanelsRect.top+PanelRect1.Height(), PanelsRect.right /2 ,(PanelsRect.Height()/3) + PanelRect1.Height());
- //Now draw the Panels
- if (pOld != NULL)
- {
- argDC->StretchBlt(PanelRect1.left ,PanelRect1.top,PanelRect1.Width(),PanelRect1.Height(),
- &memDC,0,0,bits.bmWidth-1, bits.bmHeight-1, SRCCOPY);
- argDC->StretchBlt(PanelRect2.left,PanelRect2.top,PanelRect2.Width(),PanelRect2.Height(),
- &memDC,0,0,bits.bmWidth-1, bits.bmHeight-1, SRCCOPY);
- memDC.SelectObject(pOld);
- `if (iSWLDigits < m_SWLDigitsNum).`
- bool bCondition = /*whatever*/
- m_GreenPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_GREEN);
- m_RedPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_RED);
- CBitmap* pBitmapToDisplay = bCondition ? &m_GreenPanelBitmap : &m_RedPanelBitmap;
- CBitmap* pOld = memDC.SelectObject(pBitmapToDisplay);
- BITMAP bits;
- pBitmapToDisplay->GetObject(sizeof(BITMAP),&bits);
- PanelRect1.SetRect(0,PanelsRect.top, PanelsRect.right /2 , PanelsRect.Height()/3);
- PanelRect2.SetRect(0,PanelsRect.top+PanelRect1.Height(), PanelsRect.right /2, PanelsRect.Height()/3) + PanelRect1.Height());
- argDC->StretchBlt(PanelRect1.left ,PanelRect1.top,PanelRect1.Width(),PanelRect1.Height(),
- &memDC,0,0,bits.bmWidth-1, bits.bmHeight-1, SRCCOPY);
- memDC.SelectObject(pOld);