Advertisement
Guest User

Untitled

a guest
Jan 14th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.67 KB | None | 0 0
  1. case WM_CTLCOLORDLG:
  2.     {  
  3.         RECT rect; // dialog's client rectangle
  4.  
  5.         GetClientRect( hwnd, &rect );
  6.  
  7.         // ligh gray brush for hatched brush
  8.  
  9.         HBRUSH hbPozadina = CreateSolidBrush( RGB( 242, 242, 242 ) );
  10.  
  11.         FillRect( (HDC)wParam, &rect, hbPozadina );
  12.  
  13.         // cleanup
  14.  
  15.         DeleteObject( hbPozadina );
  16.  
  17.         // draw grid "manualy"
  18.  
  19.         LOGBRUSH lbPozadina;
  20.  
  21.         HGDIOBJ hPenPozadina = NULL, hOldPenPozadina;
  22.  
  23.         lbPozadina.lbColor = RGB( 255, 255, 255 );
  24.         lbPozadina.lbHatch = 0;
  25.         lbPozadina.lbStyle = BS_SOLID;
  26.  
  27.         hPenPozadina = ExtCreatePen( PS_COSMETIC | PS_SOLID, 1, &lbPozadina, 0, NULL);
  28.  
  29.         hOldPenPozadina = SelectObject((HDC)wParam, hPenPozadina);
  30.  
  31.         // draw vertical lines
  32.  
  33.         for( int i = rect.left + 12; i< rect.right; i += 12)
  34.         {
  35.             MoveToEx((HDC)wParam, i, rect.top, NULL );
  36.  
  37.             LineTo((HDC)wParam, i, rect.bottom - rect.top + 1 );
  38.         }
  39.  
  40.         // draw horizontal lines
  41.  
  42.         for( int i = rect.top + 12; i< rect.bottom; i += 12)
  43.         {
  44.             MoveToEx((HDC)wParam, rect.left, i, NULL );
  45.  
  46.             LineTo((HDC)wParam, rect.right - rect.left + 1, i );
  47.         }
  48.  
  49.         //clean up
  50.  
  51.         SelectObject((HDC)wParam, hOldPenPozadina);
  52.  
  53.         DeleteObject(hPenPozadina);
  54.  
  55.         // draw metafile of the map
  56.  
  57.         HENHMETAFILE hemf = GetEnhMetaFile( L".\\resources\\KartaDlg.emf" );
  58.         ENHMETAHEADER emh;
  59.         GetEnhMetaFileHeader( hemf, sizeof(emh), &emh );
  60.  
  61.         // remove the "status bar" from the calculation
  62.  
  63.         RECT r;
  64.  
  65.         r.top = rect.top;
  66.         r.bottom = rect.bottom - 30;
  67.         r.left = rect.left;
  68.         r.right = rect.right;
  69.  
  70.         // calculate rescaled metafile
  71.  
  72.         UINT o_height = emh.rclFrame.bottom - emh.rclFrame.top,
  73.             o_width =  emh.rclFrame.right - emh.rclFrame.left;
  74.  
  75.         float scale = 0.5;
  76.  
  77.         scale = (float)( r.right - r.left ) / o_width;
  78.  
  79.         if( (float)( r.bottom - r.top ) / o_height  <  scale )
  80.             scale = (float)( r.bottom - r.top ) / o_height;
  81.  
  82.         int marginX = ( r.right - r.left ) - (int)( o_width * scale );
  83.         int marginY = ( r.bottom - r.top ) - (int)( o_height * scale );
  84.  
  85.         marginX /= 2;
  86.         marginY /= 2;
  87.  
  88.         r.left = r.left + marginX;
  89.         r.right = r.right - marginX;
  90.         r.top = r.top + marginY;
  91.         r.bottom = r.bottom - marginY;
  92.  
  93.         // Draw the picture.  
  94.  
  95.         PlayEnhMetaFile( (HDC)wParam, hemf, &r );
  96.  
  97.         // Release the metafile handle.  
  98.  
  99.         DeleteEnhMetaFile(hemf);
  100.  
  101.         // this function draws green gradient and icon
  102.  
  103.         drawFooter( (HDC)wParam, rect,
  104.             RGB( 0x48, 0xAC, 0xC6), RGB( 0x31, 0x83, 0x99 ) );
  105.  
  106.         //========= draw right text in status bar =============//
  107.  
  108.         SetBkMode( (HDC)wParam, TRANSPARENT );
  109.  
  110.         SIZE sBaner; // needed for proper positioning
  111.  
  112.         HFONT hf, hfOld;
  113.  
  114.         long lfHeight;
  115.  
  116.         lfHeight = -MulDiv( 8, GetDeviceCaps( (HDC)wParam, LOGPIXELSY), 72 );
  117.  
  118.         hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, TRUE,
  119.             0, 0, 0, 0, 0, 0, 0, L"Arial Black" );
  120.  
  121.         hfOld = (HFONT)SelectObject( (HDC)wParam, hf ); // needed for proper cleanup
  122.  
  123.         GetTextExtentPoint32( (HDC)wParam,
  124.             L"ЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ",
  125.             wcslen(L"ЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ"),
  126.             &sBaner );
  127.  
  128.         // position it properly
  129.  
  130.         r.bottom = rect.bottom;
  131.         r.right = rect.left + sBaner.cx + 30;
  132.         r.left = rect.left + 30;
  133.         r.top = rect.bottom - rect.top - 30;
  134.  
  135.         // draw it
  136.  
  137.         DrawTextEx( (HDC)wParam,
  138.             L"РУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ",
  139.             wcslen(L"РУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ"),
  140.             &r, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
  141.  
  142.         SelectObject( (HDC)wParam, hfOld ); // proper cleanup
  143.  
  144.         DeleteObject( hf );
  145.  
  146.         //============== right text in the status bar ==================//
  147.  
  148.         lfHeight = -MulDiv( 10, GetDeviceCaps( (HDC)wParam, LOGPIXELSY), 72 );
  149.  
  150.         hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, TRUE,
  151.             0, 0, 0, 0, 0, 0, 0, L"Arial" );
  152.  
  153.         hfOld = (HFONT)SelectObject( (HDC)wParam, hf ); // needed for proper cleanup
  154.  
  155.         GetTextExtentPoint32( (HDC)wParam,
  156.             L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана",
  157.             wcslen(L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана"),
  158.             &sBaner );
  159.  
  160.         // position it properly
  161.  
  162.         r.bottom = rect.bottom;
  163.         r.right = rect.right - 10;
  164.         r.left = rect.right - rect.left - sBaner.cx - 10;
  165.         r.top = rect.bottom - rect.top - sBaner.cy;
  166.  
  167.         // draw it
  168.  
  169.         DrawTextEx( (HDC)wParam,
  170.             L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана",
  171.             wcslen(L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана"),
  172.             &r, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK | DT_NOPREFIX, 0 );
  173.  
  174.         // perform proper cleanup
  175.  
  176.         SelectObject( (HDC)wParam, hfOld );
  177.  
  178.         DeleteObject(hf);
  179.     }
  180.     return (INT_PTR)GetStockObject(NULL_BRUSH);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement