Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 2.52 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Getting a bitmap to change colour when a limit is reached
  2. CFont* def_font = argDC->SelectObject(&m_Font);
  3.    CString csText;
  4.    int StartPos = WindowRect.Width()/5;
  5.    CRect TextRect(StartPos, WindowRect.top + 5, StartPos + 100, WindowRect.top + 35);
  6.    csText.Format(_T("%.2ft"), argSystemDataPtr->GetMaxSWL());
  7.    int32_t iSWLDigits = csText.GetLength();
  8.    if (iSWLDigits < m_SWLDigitsNum)
  9.    {
  10.       m_RedPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_RED);
  11.       //argDC->FillSolidRect(TextRect, RGB(255, 255, 255));
  12.    }
  13.    m_SWLDigitsNum = iSWLDigits;
  14.    argDC->DrawText(csText, TextRect, DT_LEFT);
  15.        
  16. CRect PanelRect1, PanelRect2;
  17.  
  18.          CRect PanelsRect(WindowRect);
  19.  
  20.          const int BarHeight = 30;
  21.          PanelsRect.OffsetRect(0,m_bShowTitleBar?BarHeight:-BarHeight);
  22.          PanelsRect.DeflateRect(0,m_bShowTitleBar?BarHeight*-1:BarHeight);
  23.  
  24.  
  25.          m_GreenPanelBitmap.Detach();
  26.  
  27.  
  28.          m_GreenPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_GREEN);
  29.  
  30.          CBitmap* pOld = memDC.SelectObject(&m_GreenPanelBitmap);
  31.  
  32.          BITMAP bits;
  33.  
  34.          m_GreenPanelBitmap.GetObject(sizeof(BITMAP),&bits);
  35.  
  36.          PanelRect1.SetRect(0,PanelsRect.top, PanelsRect.right /2 , PanelsRect.Height()/3);
  37.          PanelRect2.SetRect(0,PanelsRect.top+PanelRect1.Height(), PanelsRect.right /2 ,(PanelsRect.Height()/3) + PanelRect1.Height());
  38.  
  39.  
  40.          //Now draw the Panels
  41.          if (pOld != NULL)
  42.          {
  43.  
  44.             argDC->StretchBlt(PanelRect1.left ,PanelRect1.top,PanelRect1.Width(),PanelRect1.Height(),
  45.             &memDC,0,0,bits.bmWidth-1, bits.bmHeight-1, SRCCOPY);
  46.  
  47.             argDC->StretchBlt(PanelRect2.left,PanelRect2.top,PanelRect2.Width(),PanelRect2.Height(),
  48.             &memDC,0,0,bits.bmWidth-1, bits.bmHeight-1, SRCCOPY);
  49.  
  50.  
  51.             memDC.SelectObject(pOld);
  52.        
  53. `if (iSWLDigits < m_SWLDigitsNum).`
  54.        
  55. bool bCondition = /*whatever*/
  56.  
  57. m_GreenPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_GREEN);
  58. m_RedPanelBitmap.LoadBitmapW(IDB_BITMAP_PANEL_RED);
  59.  
  60. CBitmap* pBitmapToDisplay = bCondition ? &m_GreenPanelBitmap : &m_RedPanelBitmap;
  61.  
  62. CBitmap* pOld = memDC.SelectObject(pBitmapToDisplay);
  63.  
  64. BITMAP bits;
  65. pBitmapToDisplay->GetObject(sizeof(BITMAP),&bits);
  66.  
  67. PanelRect1.SetRect(0,PanelsRect.top, PanelsRect.right /2 , PanelsRect.Height()/3);
  68. PanelRect2.SetRect(0,PanelsRect.top+PanelRect1.Height(), PanelsRect.right /2, PanelsRect.Height()/3) + PanelRect1.Height());
  69.  
  70. argDC->StretchBlt(PanelRect1.left ,PanelRect1.top,PanelRect1.Width(),PanelRect1.Height(),
  71.             &memDC,0,0,bits.bmWidth-1, bits.bmHeight-1, SRCCOPY);
  72.  
  73. memDC.SelectObject(pOld);