Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "resource.h"
- #include <windows.h>
- #include <windowsx.h> // for TransparentBlt()
- #include <commctrl.h>
- #include <gdiplus.h>
- #pragma comment( linker, "/manifestdependency:\"type='win32' \
- name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
- processorArchitecture='*' publicKeyToken='6595b64144ccf1df' \
- language='*'\"")
- #pragma comment( lib, "comctl32.lib")
- #pragma comment( lib, "Msimg32.lib" ) // for TransparentBlt()
- #pragma comment( lib, "Gdiplus.lib" )
- using namespace Gdiplus;
- // variable for storing the instance
- static HINSTANCE hInst;
- // icons
- static HICON hIcon, // main window's icon
- hiAdmin; // icon in the left corner of the status bar
- // WinMain's procedure
- void BitBltImages(HWND hwnd, HDC hdcMem, HDC leftbmpDC, HDC rightbmpDC, Image* image, Image* image1)
- {
- RECT r;
- GetClientRect(hwnd, &r);
- //============= aspect ratio ================//
- UINT o_height = image->GetHeight(), o_width = image->GetWidth();
- INT n_width = 80;
- INT n_height = 100;
- double ratio = ( (double)o_width ) / ( (double)o_height );
- if (o_width > o_height)
- {
- // Resize down by width
- n_height = static_cast<UINT>( ( (double)n_width ) / ratio );
- }
- else
- n_width = static_cast<UINT>(n_height * ratio);
- //==================== draw it with high quality ==========================//
- // graphics.DrawImage( image, r.left + 5, r.top + 10, n_width, n_height );
- int x = r.left + 5;
- int y = r.top + 10;
- //BitBlt(hdcMem, x, y, n_width, n_height, leftbmpDC, 0, 0, SRCCOPY);
- TransparentBlt(hdcMem,
- x, y, n_width, n_height,
- leftbmpDC,
- 0, 0, n_width, n_height,
- RGB(255, 255, 255));
- /******************** right logo *******************/
- //============= aspect ratio ================//
- o_height = image1->GetHeight(), o_width = image1->GetWidth();
- n_width = 90;
- n_height = 100;
- ratio = ( (double)o_width ) / ( (double)o_height );
- if (o_width > o_height)
- {
- // Resize down by width
- n_height = static_cast<UINT>( ( (double)n_width ) / ratio );
- }
- else
- n_width = static_cast<UINT>(n_height * ratio);
- //===================== draw it with high quality ==========================//
- x = r.right - r.left - 90;
- y = r.top + 10;
- //BitBlt(hdcMem, x, y, n_width, n_height, rightbmpDC, 0, 0, SRCCOPY);
- TransparentBlt(hdcMem,
- x, y, n_width, n_height,
- rightbmpDC,
- 0, 0, n_width, n_height,
- RGB(255, 255, 255));
- }
- LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
- {
- // bitmap for middle logo
- static HBITMAP bmpSimbol;
- // variables for painting the window
- static HBRUSH hbPozadina; // gray background brush for grid on the top
- static Image *image = Image::FromFile(L".\\resources\\BG.emf"), // left logo
- *image1 = Image::FromFile(L".\\resources\\RGF.png"); // right logo
- //UPDATE////////
- static HDC MemDC;
- static HBITMAP bmp;
- static HDC middlebmpDC;
- static BITMAP middlebmp;
- static HDC leftbmpDC;
- static HBITMAP leftbmp;
- static HDC rightbmpDC;
- static HBITMAP rightbmp;
- switch(msg)
- {
- case WM_CREATE:
- {
- // load gray background brush for the top banner
- hbPozadina = CreateSolidBrush( RGB( 230, 230, 230 ) );
- // load left icon in the status bar
- hiAdmin = LoadIcon( hInst, MAKEINTRESOURCE(IDI_ICON2) );
- // load middle logo
- bmpSimbol = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP16) );
- int max_width = GetSystemMetrics(SM_CXSCREEN);
- int max_height = GetSystemMetrics(SM_CYSCREEN);
- HDC hdc = GetDC(hwnd);
- //main memDC
- MemDC = CreateCompatibleDC(hdc);
- bmp = CreateCompatibleBitmap( hdc, max_width, max_height);
- SelectObject(MemDC, bmp);
- //left image memdc
- middlebmpDC = CreateCompatibleDC(hdc);
- memset( &middlebmp, 0 , sizeof(BITMAP) );
- GetObject( bmpSimbol, sizeof(BITMAP), &middlebmp );
- SelectObject( middlebmpDC, bmpSimbol );
- //left image-----------------------------
- //============= aspect ratio ================//
- UINT o_height = image->GetHeight(), o_width = image->GetWidth();
- INT n_width = 80;
- INT n_height = 100;
- double ratio = ( (double)o_width ) / ( (double)o_height );
- if (o_width > o_height)
- {
- // Resize down by width
- n_height = static_cast<UINT>( ( (double)n_width ) / ratio );
- }
- else
- n_width = static_cast<UINT>(n_height * ratio);
- //==================== draw it with high quality ==========================//
- leftbmpDC = CreateCompatibleDC(hdc);
- leftbmp = CreateCompatibleBitmap(hdc, n_width, n_height);
- SelectObject(leftbmpDC, leftbmp);
- SetBkMode(leftbmpDC, TRANSPARENT);
- RECT rc = {0, 0, n_width, n_height};
- FillRect(leftbmpDC, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));
- Graphics graphics( leftbmpDC );
- int img_x = 0;
- int img_y = 0;
- graphics.SetSmoothingMode( SmoothingModeHighQuality );
- graphics.SetInterpolationMode( InterpolationModeHighQualityBicubic );
- graphics.DrawImage( image, img_x,img_y, n_width, n_height );
- /******************** right logo *******************/
- //============= aspect ratio ================//
- o_height = image1->GetHeight(), o_width = image1->GetWidth();
- n_width = 90;
- n_height = 100;
- ratio = ( (double)o_width ) / ( (double)o_height );
- if (o_width > o_height)
- {
- // Resize down by width
- n_height = static_cast<UINT>( ( (double)n_width ) / ratio );
- }
- else
- n_width = static_cast<UINT>(n_height * ratio);
- //===================== draw it with high quality ==========================//
- //right image memdc
- rightbmpDC = CreateCompatibleDC(hdc);
- rightbmp = CreateCompatibleBitmap(hdc, n_width, n_height);
- SelectObject(rightbmpDC, rightbmp);
- SetBkMode(leftbmpDC, TRANSPARENT);
- FillRect(rightbmpDC, &rc, (HBRUSH) GetStockObject(WHITE_BRUSH));
- graphics.ReleaseHDC(leftbmpDC);
- Graphics graphics2(rightbmpDC);
- //graphics.FromHDC(rightbmpDC);
- graphics2.DrawImage( image1, img_x, img_y, n_width, n_height );
- //---------------------------------------
- ReleaseDC(hwnd, hdc);
- }
- return (LRESULT)0;
- case WM_ERASEBKGND:
- return (LRESULT)1; // so we avoid flicker ( all painting is in WM_PAINT )
- case WM_PAINT:
- {
- PAINTSTRUCT ps;
- HDC hdc = BeginPaint( hwnd, &ps);
- RECT r; // rectangle for main window's client area
- GetClientRect( hwnd, &r);
- //HDC hdcMemImg = CreateCompatibleDC(hdc); // back buffer for middle logo
- // compatible bitmap for MemDC
- //HBITMAP bmp = CreateCompatibleBitmap( hdc, r.right - r.left, r.bottom - r.top );
- //HBITMAP oldBmp = (HBITMAP)SelectObject( MemDC, bmp ); // needed for cleanup
- /*************** nacrtaj baner ******************/
- // top banner background
- // position it properly at the top
- RECT rect;
- rect.left = r.left;
- rect.top = r.top;
- rect.right = r.right;
- rect.bottom = 120;
- FillRect( MemDC, &rect, hbPozadina );
- // draw grid on the banner background
- LOGBRUSH lbPozadina;
- HGDIOBJ hPenPozadina = NULL, hOldPenPozadina;
- lbPozadina.lbColor = RGB( 216, 216, 216 );
- lbPozadina.lbHatch = 0;
- lbPozadina.lbStyle = BS_SOLID;
- hPenPozadina = ExtCreatePen( PS_COSMETIC | PS_SOLID, 1, &lbPozadina, 0, NULL);
- hOldPenPozadina = SelectObject( MemDC, hPenPozadina); // needed for cleanup
- for( int i = rect.left + 12; i< rect.right; i += 12)
- {
- MoveToEx( MemDC, i, rect.top, NULL );
- LineTo( MemDC, i, rect.bottom - rect.top + 1 );
- }
- for( int i = rect.top + 12; i< rect.bottom; i += 12)
- {
- MoveToEx( MemDC, rect.left, i, NULL );
- LineTo( MemDC, rect.right - rect.left + 1, i );
- }
- // perform proper cleanup
- SelectObject( MemDC, hOldPenPozadina);
- DeleteObject(hPenPozadina);
- /************************ middle orange text ************************/
- HFONT hf, hfOld;
- long lfHeight;
- // set font size below via function's first argument
- lfHeight = -MulDiv( 14, GetDeviceCaps( MemDC, LOGPIXELSY), 72 );
- hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, 0, 0, 0, 0, 0, 0, 0, 0,
- L"Arial Black" );
- SetBkMode( MemDC, TRANSPARENT );
- SetTextColor( MemDC, RGB( 255, 163, 94 ) ); // orange
- hfOld = (HFONT)SelectObject( MemDC, hf ); // needed for cleanup
- RECT baner; // needed for proper positioning
- SIZE sBaner; // needed for proper positioning
- GetTextExtentPoint32( MemDC, L"ГЕОТЕРМАЛНИ ИНФОРМАЦИОНИ СИСТЕМ ГРАДА БЕОГРАДА-ГЕОТЕРМИСТ",
- wcslen(L"ГЕОТЕРМАЛНИ ИНФОРМАЦИОНИ СИСТЕМ ГРАДА БЕОГРАДА-ГЕОТЕРМИСТ"), &sBaner );
- // proper positioning
- baner.left = r.left + 60;
- baner.right = r.right - r.left - 60;
- baner.top = r.top + 15;
- baner.bottom = r.top + sBaner.cy;
- DrawTextEx( MemDC, L"ГЕОТЕРМАЛНИ ИНФОРМАЦИОНИ СИСТЕМ ГРАДА БЕОГРАДА-ГЕОТЕРМИСТ",
- wcslen(L"ГЕОТЕРМАЛНИ ИНФОРМАЦИОНИ СИСТЕМ ГРАДА БЕОГРАДА-ГЕОТЕРМИСТ"), &baner,
- DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
- SelectObject( MemDC, hfOld ); // proper cleanup
- /******************* middle logo ********************/
- // draw bitmap to the back buffer
- TransparentBlt( MemDC, ( r.right - r.left - 64 ) / 2, r.top + 20 + sBaner.cy, 64, 64,
- middlebmpDC, 0, 0, middlebmp.bmWidth, middlebmp.bmHeight, RGB( 0, 0, 0) );
- /******************************* left text ************************/
- baner.left = r.left + 90;
- baner.top = r.top + sBaner.cy + 28;
- baner.right = 460;
- baner.bottom = r.bottom;
- lfHeight = -MulDiv( 8, GetDeviceCaps( MemDC, LOGPIXELSY), 72 );
- hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, 0, 0, 0, 0, 0, 0, 0, 0,
- L"Arial Black" );
- SetTextColor( MemDC, RGB( 0, 0, 0 ) );
- hfOld = (HFONT)SelectObject( MemDC, hf ); // needed for proper cleanup
- DrawTextEx( MemDC, L"УПРАВА ГРАДА БЕОГРАДА\nСЕКРЕТАРИЈАТ ЗА КОМУНАЛНЕ И СТАМБЕНЕ ПОСЛОВЕ\nУПРАВА ЗА ЕНЕРГЕТИКУ",
- wcslen(L"УПРАВА ГРАДА БЕОГРАДА\nСЕКРЕТАРИЈАТ ЗА КОМУНАЛНЕ И СТАМБЕНЕ ПОСЛОВЕ\nУПРАВА ЗА ЕНЕРГЕТИКУ"),
- &baner, DT_CENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
- SelectObject( MemDC, hfOld ); // proper cleanup
- /*************************** right text *************************/
- baner.top = r.top + sBaner.cy + 28;
- baner.left = r.right - 350;
- baner.right = r.right - 100;
- baner.bottom = r.bottom;
- lfHeight = -MulDiv( 8, GetDeviceCaps( MemDC, LOGPIXELSY), 72 );
- hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, 0, 0, 0, 0, 0, 0, 0, 0,
- L"Arial Black" );
- hfOld = (HFONT)SelectObject( MemDC, hf ); // needed for proper cleanup
- DrawTextEx( MemDC, L"УНИВЕРЗИТЕТ У БЕОГРАДУ\nРУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nДЕПАРТМАН ЗА ХИДРОГЕОЛОГИЈУ",
- wcslen(L"УНИВЕРЗИТЕТ У БЕОГРАДУ\nРУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nДЕПАРТМАН ЗА ХИДРОГЕОЛОГИЈУ"),
- &baner, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
- SelectObject( MemDC, hfOld ); // proper cleanup
- /******************** main window's gradient background ***************/
- //============ down triangle =========//
- TRIVERTEX vertex[3];
- vertex[0].x = r.right;
- vertex[0].y = r.bottom - r.top - 30;
- vertex[0].Red = 0xDB00;
- vertex[0].Green = 0xE500;
- vertex[0].Blue = 0xF100;
- vertex[0].Alpha = 0x0000;
- vertex[1].x = r.left;
- vertex[1].y = r.bottom - r.top - 30;
- vertex[1].Red = 0x9500;
- vertex[1].Green = 0xB300;
- vertex[1].Blue = 0xD700;
- vertex[1].Alpha = 0x0000;
- vertex[2].x = r.left;
- vertex[2].y = r.top + 120;
- vertex[2].Red = 0xDB00;
- vertex[2].Green = 0xE500;
- vertex[2].Blue = 0xF100;
- vertex[2].Alpha = 0x0000;
- // Create a GRADIENT_TRIANGLE structure that
- // references the TRIVERTEX vertices.
- GRADIENT_TRIANGLE gTriangle;
- gTriangle.Vertex1 = 0;
- gTriangle.Vertex2 = 1;
- gTriangle.Vertex3 = 2;
- // Draw a shaded triangle.
- GradientFill( MemDC, vertex, 3, &gTriangle, 1, GRADIENT_FILL_TRIANGLE);
- //=============== upper triangle =================//
- TRIVERTEX vertex1[3];
- vertex1[0].x = r.right;
- vertex1[0].y = r.bottom - r.top - 30;
- vertex1[0].Red = 0xDB00;
- vertex1[0].Green = 0xE500;
- vertex1[0].Blue = 0xF100;
- vertex1[0].Alpha = 0x0000;
- vertex1[1].x = r.right;
- vertex1[1].y = r.top + 120;
- vertex1[1].Red = 0x9500;
- vertex1[1].Green = 0xB300;
- vertex1[1].Blue = 0xD700;
- vertex1[1].Alpha = 0x0000;
- vertex1[2].x = r.left;
- vertex1[2].y = r.top + 120;
- vertex1[2].Red = 0xDB00;
- vertex1[2].Green = 0xE500;
- vertex1[2].Blue = 0xF100;
- vertex1[2].Alpha = 0x0000;
- // Draw a shaded triangle.
- GradientFill( MemDC, vertex1, 3, &gTriangle, 1, GRADIENT_FILL_TRIANGLE);
- /******************** left logo *******************/
- ///////////////////////////////////////////////////////////////////////////////////////////
- BitBltImages(hwnd, MemDC, leftbmpDC, rightbmpDC, image, image1);
- ///////////////////////////////////////////////////////////////////////////////////////////
- /********* draw a line at the bottom of the top banner ******/
- LOGBRUSH lb;
- HGDIOBJ hPen = NULL, hOldPen;
- lb.lbColor = RGB( 0, 0, 0 );
- lb.lbHatch = 0;
- lb.lbStyle = BS_SOLID;
- hPen = ExtCreatePen( PS_COSMETIC | PS_SOLID, 1, &lb, 0, NULL);
- hOldPen = SelectObject( MemDC, hPen ); // needed for proper cleanup
- MoveToEx( MemDC, r.left, r.top + 120, NULL );
- LineTo( MemDC, r.right - r.left + 1, r.top + 120 );
- // perform proper cleanup
- SelectObject( MemDC, hOldPen );
- DeleteObject(hPen);
- /***************** draw status bar **************/
- //============= down triangle ==================//
- TRIVERTEX vertex3[3];
- vertex3[0].x = r.right;
- vertex3[0].y = r.bottom;
- vertex3[0].Red = 0x3100;
- vertex3[0].Green = 0x8300;
- vertex3[0].Blue = 0x9900;
- vertex3[0].Alpha = 0x0000;
- vertex3[1].x = r.left;
- vertex3[1].y = r.bottom;
- vertex3[1].Red = 0x3100;
- vertex3[1].Green = 0x8300;
- vertex3[1].Blue = 0x9900;
- vertex3[1].Alpha = 0x0000;
- vertex3[2].x = ( r.right - r.left ) / 2;
- vertex3[2].y = r.bottom - r.top - 15;
- vertex3[2].Red = 0x4800;
- vertex3[2].Green = 0xAC00;
- vertex3[2].Blue = 0xC600;
- vertex3[2].Alpha = 0x0000;
- // Create a GRADIENT_TRIANGLE structure that
- // references the TRIVERTEX vertices.
- GRADIENT_TRIANGLE gTriangleStatusBar;
- gTriangleStatusBar.Vertex1 = 0;
- gTriangleStatusBar.Vertex2 = 1;
- gTriangleStatusBar.Vertex3 = 2;
- // Draw a shaded triangle.
- GradientFill( MemDC, vertex3, 3, &gTriangleStatusBar, 1,
- GRADIENT_FILL_TRIANGLE);
- //============== upper triangle ==============//
- TRIVERTEX vertex1s[3];
- vertex1s[0].x = r.right;
- vertex1s[0].y = r.bottom - r.top - 30;
- vertex1s[0].Red = 0x3100;
- vertex1s[0].Green = 0x8300;
- vertex1s[0].Blue = 0x9900;
- vertex1s[0].Alpha = 0x0000;
- vertex1s[1].x = r.left;
- vertex1s[1].y = r.bottom - r.top - 30;
- vertex1s[1].Red = 0x3100;
- vertex1s[1].Green = 0x8300;
- vertex1s[1].Blue = 0x9900;
- vertex1s[1].Alpha = 0x0000;
- vertex1s[2].x = ( r.right - r.left ) / 2;
- vertex1s[2].y = r.bottom - r.top - 15;
- vertex1s[2].Red = 0x4800;
- vertex1s[2].Green = 0xAC00;
- vertex1s[2].Blue = 0xC600;
- vertex1s[2].Alpha = 0x0000;
- // Draw a shaded triangle.
- GradientFill( MemDC, vertex1s, 3, &gTriangleStatusBar, 1,
- GRADIENT_FILL_TRIANGLE );
- //================== left triangle =================//
- TRIVERTEX vertex2s[3];
- vertex2s[0].x = r.left;
- vertex2s[0].y = r.bottom ;
- vertex2s[0].Red = 0x3100;
- vertex2s[0].Green = 0x8300;
- vertex2s[0].Blue = 0x9900;
- vertex2s[0].Alpha = 0x0000;
- vertex2s[1].x = r.left;
- vertex2s[1].y = r.bottom - r.top - 30;
- vertex2s[1].Red = 0x3100;
- vertex2s[1].Green = 0x8300;
- vertex2s[1].Blue = 0x9900;
- vertex2s[1].Alpha = 0x0000;
- vertex2s[2].x = ( r.right - r.left ) / 2;
- vertex2s[2].y = r.bottom - r.top - 15;
- vertex2s[2].Red = 0x4800;
- vertex2s[2].Green = 0xAC00;
- vertex2s[2].Blue = 0xC600;
- vertex2s[2].Alpha = 0x0000;
- // Draw a shaded triangle.
- GradientFill( MemDC, vertex2s, 3, &gTriangleStatusBar, 1,
- GRADIENT_FILL_TRIANGLE );
- //================= right triangle ================//
- TRIVERTEX vertex3s[3];
- vertex3s[0].x = r.right;
- vertex3s[0].y = r.bottom - r.top - 30;
- vertex3s[0].Red = 0x3100;
- vertex3s[0].Green = 0x8300;
- vertex3s[0].Blue = 0x9900;
- vertex3s[0].Alpha = 0x0000;
- vertex3s[1].x = r.right;
- vertex3s[1].y = r.bottom;
- vertex3s[1].Red = 0x3100;
- vertex3s[1].Green = 0x8300;
- vertex3s[1].Blue = 0x9900;
- vertex3s[1].Alpha = 0x0000;
- vertex3s[2].x = ( r.right - r.left ) / 2;
- vertex3s[2].y = r.bottom - r.top - 15;
- vertex3s[2].Red = 0x4800;
- vertex3s[2].Green = 0xAC00;
- vertex3s[2].Blue = 0xC600;
- vertex3s[2].Alpha = 0x0000;
- // Draw a shaded triangle.
- GradientFill( MemDC, vertex3s, 3, &gTriangleStatusBar, 1,
- GRADIENT_FILL_TRIANGLE );
- //========= draw right text in status bar =============//
- lfHeight = -MulDiv( 8, GetDeviceCaps( MemDC, LOGPIXELSY), 72 );
- hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, TRUE, 0, 0, 0, 0, 0, 0, 0,
- L"Arial Black" );
- hfOld = (HFONT)SelectObject( MemDC, hf ); // needed for proper cleanup
- GetTextExtentPoint32( MemDC, L"ЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ",
- wcslen(L"ЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ"), &sBaner );
- // position it properly
- RECT rcStatusBar;
- rcStatusBar.bottom = r.bottom;
- rcStatusBar.right = r.left + sBaner.cx + 30;
- rcStatusBar.left = r.left + 30;
- rcStatusBar.top = r.bottom - r.top - 30;
- // draw it to the back buffer
- DrawTextEx( MemDC, L"РУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ",
- wcslen(L"РУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ"),
- &rcStatusBar, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
- SelectObject( MemDC, hfOld ); // proper cleanup
- //============== right text in the status bar ==================//
- lfHeight = -MulDiv( 10, GetDeviceCaps( MemDC, LOGPIXELSY), 72 );
- hf = CreateFont( lfHeight, 0, 0, 0, FW_BOLD, TRUE, 0, 0, 0, 0, 0, 0, 0,
- L"Arial" );
- hfOld = (HFONT)SelectObject( MemDC, hf ); // needed for proper cleanup
- GetTextExtentPoint32( MemDC, L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана",
- wcslen(L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана"), &sBaner );
- // position it properly
- rcStatusBar.bottom = r.bottom;
- rcStatusBar.right = r.right - 10;
- rcStatusBar.left = r.right - r.left - sBaner.cx - 10;
- rcStatusBar.top = r.bottom - r.top - sBaner.cy;
- // draw it to the back buffer
- DrawTextEx( MemDC, L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана",
- wcslen(L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана"),
- &rcStatusBar, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK | DT_NOPREFIX, 0 );
- // draw icon
- DrawIconEx( MemDC, r.left, r.bottom - r.top - 30, hiAdmin, 30, 30, NULL, NULL, DI_NORMAL );
- // perform proper cleanup
- SelectObject( MemDC, hfOld );
- DeleteObject(hf);
- /****************** draw back buffer on the screen DC *****************/
- BitBlt( hdc, 0, 0, r.right - r.left, r.bottom - r.top, MemDC, 0, 0, SRCCOPY );
- /************** cleanup *******************/
- //SelectObject( MemDC, oldBmp );
- //DeleteObject(bmp); // compatible bitmap for MemDC
- //DeleteDC(hdcMemImg); // memory DC for middle logo
- //DeleteDC(MemDC);
- EndPaint( hwnd, &ps);
- }
- return (LRESULT)0;
- case WM_SIZE:
- InvalidateRect( hwnd, NULL, TRUE);
- return (LRESULT)0;
- case WM_CLOSE:
- // destroy bitmaps
- DeleteObject(bmpSimbol);
- // destroy icons
- DestroyIcon(hIcon);
- DestroyIcon(hiAdmin);
- // destroy brushes
- DeleteObject(hbPozadina);
- // delete Image objects
- delete image;
- delete image1;
- DestroyWindow(hwnd);
- return (LRESULT)0;
- case WM_DESTROY:
- PostQuitMessage(0);
- //main dc
- DeleteDC(MemDC);
- DeleteObject(bmp);
- //left image dc
- DeleteDC(leftbmpDC);
- //right image dc
- DeleteDC(rightbmpDC);
- return (LRESULT)0;
- default:
- return DefWindowProc(hwnd, msg, wParam, lParam);
- }
- return 0;
- }
- // WinMain
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
- int nCmdShow)
- {
- // store hInstance in global variable for later use
- hInst = hInstance;
- // load main icon
- hIcon = LoadIcon( hInst, MAKEINTRESOURCE(IDI_ICON1));
- WNDCLASSEX wc;
- HWND hwnd;
- MSG Msg;
- /*********** variables for GDI+ initialization *****************/
- GdiplusStartupInput gdiplusStartupInput;
- ULONG_PTR gdiplusToken;
- /************** Initialize GDI+. *************************/
- GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
- /*************** finished GDI+ initialisation ********************/
- // initialize common controls
- INITCOMMONCONTROLSEX iccex;
- iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
- iccex.dwICC = ICC_LISTVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_STANDARD_CLASSES ;
- InitCommonControlsEx(&iccex);
- // register main window class
- wc.cbSize = sizeof(WNDCLASSEX);
- wc.style = 0;
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInst;
- wc.hIcon = hIcon;
- wc.hCursor = LoadCursor( NULL, IDC_ARROW );
- wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
- wc.lpszMenuName = NULL;
- wc.lpszClassName = L"Main_Window";
- wc.hIconSm = hIcon;
- if(!RegisterClassEx(&wc))
- {
- MessageBox(NULL, L"Window Registration Failed!", L"Error!", MB_ICONEXCLAMATION |
- MB_OK);
- return 0;
- }
- // create main window
- hwnd = CreateWindowEx( 0, L"Main_Window", L"Геотермист", WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
- ( GetSystemMetrics(SM_CXMAXIMIZED) - 1020 ) / 2, 0, 1020, 600, NULL, NULL, hInstance, 0 );
- if(hwnd == NULL)
- {
- MessageBox(NULL, L"Window creation failed!", L"Error!", MB_ICONEXCLAMATION |
- MB_OK);
- return 0;
- }
- ShowWindow(hwnd, nCmdShow);
- UpdateWindow(hwnd);
- while(GetMessage(&Msg, NULL, 0, 0) > 0)
- {
- TranslateMessage(&Msg);
- DispatchMessage(&Msg);
- }
- // shutdownd GDI+
- GdiplusShutdown(gdiplusToken);
- return Msg.wParam;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement