Here is what I did with it. I left the drawImages function for you to rewrite.
You should be able to use CBitmap and CBitmap* without breaking your code.
#include "resource.h"
#include <windows.h>
#include <afxwin.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;
static HINSTANCE hInst;
static HICON hIcon, hiAdmin; Image *image, *image1, *btn5;
static HBRUSH hbPozadina, BlueFrame, hbr;
static HBITMAP bmpBTN1, bmpBTN2, bmpBTN3, bmpBTN3a, bmpBTN4, bmpSimbol, bmpInfo, bmpLink, bmpHelp;
void GradientTriangle( CDC* MemDC, LONG x1, LONG y1, LONG x2, LONG y2, LONG x3, LONG y3,
COLORREF top, COLORREF bottom )
{
TRIVERTEX vertex[3];
vertex[0].x = x1;
vertex[0].y = y1;
vertex[0].Red = GetRValue(bottom) << 8;
vertex[0].Green = GetGValue(bottom) << 8;
vertex[0].Blue = GetBValue(bottom) << 8;
vertex[0].Alpha = 0x0000;
vertex[1].x = x2;
vertex[1].y = y2;
vertex[1].Red = GetRValue(top) << 8;
vertex[1].Green = GetGValue(top) << 8;
vertex[1].Blue = GetBValue(top) << 8;
vertex[1].Alpha = 0x0000;
vertex[2].x = x3;
vertex[2].y = y3;
vertex[2].Red = GetRValue(bottom) << 8;
vertex[2].Green = GetGValue(bottom) << 8;
vertex[2].Blue = GetBValue(bottom) << 8;
vertex[2].Alpha = 0x0000;
GRADIENT_TRIANGLE gTriangle;
gTriangle.Vertex1 = 0;
gTriangle.Vertex2 = 1;
gTriangle.Vertex3 = 2;
GradientFill( MemDC, vertex, 3, &gTriangle, 1, GRADIENT_FILL_TRIANGLE);
}
void drawBackground( HDC MemDC, RECT r )
{
GradientTriangle( MemDC, r.right, r.bottom - r.top - 30, r.left, r.bottom - r.top - 30,
r.left, r.top + 120, RGB( 0x95, 0xB3, 0xD7 ), RGB( 0xDB, 0xE5, 0xF1 ) );
GradientTriangle( MemDC, r.right, r.bottom - r.top - 30, r.right, r.top + 120,
r.left, r.top + 120, RGB( 0x95, 0xB3, 0xD7 ), RGB( 0xDB, 0xE5, 0xF1 ) );
}
void drawHeader( CDC* MemDC, RECT rect, HBRUSH hbPozadina )
{
FillRect( MemDC, &rect, hbPozadina); 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); 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 );
}
SelectObject( MemDC, hOldPenPozadina);
DeleteObject(hPenPozadina);
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 ); MoveToEx( MemDC, rect.left, rect.top + 120, NULL );
LineTo( MemDC, rect.right - rect.left + 1, rect.top + 120 );
SelectObject( MemDC, hOldPen );
DeleteObject(hPen);
}
void GradientRectangle( CDC* MemDC, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF top, COLORREF bottom )
{
TRIVERTEX vertexS[2];
vertexS[0].x = x1;
vertexS[0].y = y1;
vertexS[0].Red = GetRValue(top) << 8;
vertexS[0].Green = GetGValue(top) << 8;
vertexS[0].Blue = GetBValue(top) << 8;
vertexS[0].Alpha = 0x0000;
vertexS[1].x = x2;
vertexS[1].y = y2;
vertexS[1].Red = GetRValue(bottom) << 8;
vertexS[1].Green = GetGValue(bottom) << 8;
vertexS[1].Blue = GetBValue(bottom) << 8;
vertexS[1].Alpha = 0x0000;
GRADIENT_RECT gRect;
gRect.UpperLeft = 0;
gRect.LowerRight = 1;
GradientFill( MemDC, vertexS, 2, &gRect, 1, GRADIENT_FILL_RECT_V );
}
void FillButton( CDC* MemDC, RECT rect, HBRUSH BlueFrame )
{
GradientRectangle( MemDC, rect.left, rect.top, rect.right, rect.top + ( rect.bottom - rect.top ) / 2,
RGB( 0x95, 0xB3, 0xD7 ), RGB( 0x4F, 0x8B, 0xBD ) );
GradientRectangle( MemDC, rect.left, rect.top + ( rect.bottom - rect.top ) / 2,
rect.right, rect.bottom, RGB( 0x4F, 0x8B, 0xBD ), RGB( 0x95, 0xB3, 0xD7 ) );
FrameRect( MemDC, &rect, BlueFrame );
}
void drawFooter( CDC* MemDC, RECT r, COLORREF top, COLORREF bottom )
{
GradientTriangle( MemDC, r.right, r.bottom, ( r.right - r.left ) / 2, r.bottom - r.top - 15,
r.left, r.bottom, top, bottom );
GradientTriangle( MemDC, r.right, r.bottom - r.top - 30, ( r.right - r.left ) / 2, r.bottom - r.top - 15,
r.left, r.bottom - r.top - 30, top, bottom );
GradientTriangle( MemDC, r.left, r.bottom, ( r.right - r.left ) / 2, r.bottom - r.top - 15,
r.left, r.bottom - r.top - 30, top, bottom );
GradientTriangle( MemDC, r.right, r.bottom - r.top - 30, ( r.right - r.left ) / 2, r.bottom - r.top - 15,
r.right, r.bottom, top, bottom );
DrawIconEx( MemDC, r.left, r.bottom - r.top - 30, hiAdmin, 30, 30, NULL, NULL, DI_NORMAL );
}
void drawOrangePanel( CDC* MemDC, RECT r, COLORREF top, COLORREF bottom )
{
GradientTriangle( MemDC, r.right, r.bottom, r.left + ( r.right - r.left ) / 2, r.top + ( r.bottom - r.top ) / 2,
r.left, r.bottom, top, bottom );
GradientTriangle( MemDC, r.right, r.top, r.left + ( r.right - r.left ) / 2, r.top + ( r.bottom - r.top ) / 2,
r.left, r.top, top, bottom );
GradientTriangle( MemDC, r.left, r.bottom, r.left + ( r.right - r.left ) / 2, r.top + ( r.bottom - r.top ) / 2,
r.left, r.top, top, bottom );
GradientTriangle( MemDC, r.right, r.top, r.left + ( r.right - r.left ) / 2, r.top + ( r.bottom - r.top ) / 2,
r.right, r.bottom, top, bottom );
}
void drawStrings( CDC* MemDC, RECT r )
{
RECT rect, baner; SIZE sBaner; HFONT hf, hfOld;
long lfHeight;
rect.left = r.left;
rect.top = r.top;
rect.right = r.right;
rect.bottom = 120;
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 ) ); hfOld = (HFONT)SelectObject( MemDC, hf ); GetTextExtentPoint32( MemDC, L"ГЕОТЕРМАЛНИ ИНФОРМАЦИОНИ СИСТЕМ ГРАДА БЕОГРАДА-ГЕОТЕРМИСТ",
wcslen(L"ГЕОТЕРМАЛНИ ИНФОРМАЦИОНИ СИСТЕМ ГРАДА БЕОГРАДА-ГЕОТЕРМИСТ"), &sBaner );
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 ); DeleteObject( hf );
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 ); DrawTextEx( MemDC, L"УПРАВА ГРАДА БЕОГРАДА\nСЕКРЕТАРИЈАТ ЗА КОМУНАЛНЕ И СТАМБЕНЕ ПОСЛОВЕ\nУПРАВА ЗА ЕНЕРГЕТИКУ",
wcslen(L"УПРАВА ГРАДА БЕОГРАДА\nСЕКРЕТАРИЈАТ ЗА КОМУНАЛНЕ И СТАМБЕНЕ ПОСЛОВЕ\nУПРАВА ЗА ЕНЕРГЕТИКУ"),
&baner, DT_CENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
baner.top = r.top + sBaner.cy + 28;
baner.left = r.right - 350;
baner.right = r.right - 100;
baner.bottom = r.bottom;
DrawTextEx( MemDC, L"УНИВЕРЗИТЕТ У БЕОГРАДУ\nРУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nДЕПАРТМАН ЗА ХИДРОГЕОЛОГИЈУ",
wcslen(L"УНИВЕРЗИТЕТ У БЕОГРАДУ\nРУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nДЕПАРТМАН ЗА ХИДРОГЕОЛОГИЈУ"),
&baner, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
SelectObject( MemDC, hfOld ); DeleteObject( hf );
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 ); GetTextExtentPoint32( MemDC, L"ЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ",
wcslen(L"ЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ"), &sBaner );
rect.bottom = r.bottom;
rect.right = r.left + sBaner.cx + 30;
rect.left = r.left + 30;
rect.top = r.bottom - r.top - 30;
DrawTextEx( MemDC, L"РУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ",
wcslen(L"РУДАРСКО ГЕОЛОШКИ ФАКУЛТЕТ\nЦЕНТАР ЗА ОБНОВЉИВЕ ВОДНЕ ЕНЕРГЕТСКЕ РЕСУРСЕ"),
&rect, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK, 0 );
SelectObject( MemDC, hfOld ); DeleteObject( hf );
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 ); GetTextExtentPoint32( MemDC, L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана",
wcslen(L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана"), &sBaner );
rect.bottom = r.bottom;
rect.right = r.right - 10;
rect.left = r.right - r.left - sBaner.cx - 10;
rect.top = r.bottom - r.top - sBaner.cy;
DrawTextEx( MemDC, L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана",
wcslen(L" Дејан Миленић & Ана Врањеш © 2013 сва права задржана"),
&rect, DT_CENTER | DT_VCENTER | DT_NOCLIP | DT_WORDBREAK | DT_NOPREFIX, 0 );
SelectObject( MemDC, hfOld );
DeleteObject(hf);
rect.left = ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 230 + ( r.bottom - r.top - 450 ) / 3;
rect.right = 150 + ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 270 + ( r.bottom - r.top - 450 ) / 3;
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 );
DrawTextEx( MemDC, L"УНОС ПОДАТАКА", wcslen(L"УНОС ПОДАТАКА"),
&rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_WORDBREAK, 0 );
rect.left = 150 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 230 + ( r.bottom - r.top - 450 ) / 3;
rect.right = 300 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 270 + ( r.bottom - r.top - 450 ) / 3;
DrawTextEx( MemDC, L"ПРЕГЛЕД ПОДАТАКА", wcslen(L"ПРЕГЛЕД ПОДАТАКА"),
&rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_WORDBREAK, 0 );
rect.left = ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 380 + 2 * ( r.bottom - r.top - 450 ) / 3;
rect.right = 150 + ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 420 + 2 * ( r.bottom - r.top - 450 ) / 3;
DrawTextEx( MemDC, L"ИЗВЕШТАЈ", wcslen(L"ИЗВЕШТАЈ"),
&rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_WORDBREAK, 0 );
rect.left = 150 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 380 + 2 * ( r.bottom - r.top - 450 ) / 3;
rect.right = 300 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 420 + 2 * ( r.bottom - r.top - 450 ) / 3;
DrawTextEx( MemDC, L"ПРЕТРАГА", wcslen(L"ПРЕТРАГА"),
&rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_WORDBREAK, 0 );
SelectObject( MemDC, hfOld );
DeleteObject(hf);
rect.left = 3 * ( r.right - r.left ) / 4 + 10;
rect.top = r.top + 160;
rect.right = r.right - r.top - 50;
rect.bottom = r.top + 180;
lfHeight = -MulDiv( 10, GetDeviceCaps( MemDC, LOGPIXELSY ), 72);
hf = CreateFont(lfHeight, 0, 0, 0, FW_BOLD, 0, 0, 0, 0, 0, 0, 0, 0,L"Arial Unicode MS");
hfOld = (HFONT)SelectObject( MemDC, hf );
DrawTextEx( MemDC, L"ИНФОРМАЦИЈЕ", wcslen(L"ИНФОРМАЦИЈЕ"), &rect,
DT_VCENTER | DT_LEFT | DT_SINGLELINE, 0 );
rect.left = 3 * ( r.right - r.left ) / 4 + 10;
rect.top = r.top + 200;
rect.bottom = r.top + 220;
DrawTextEx( MemDC, L"ПОМОЋ", wcslen(L"ПОМОЋ"), &rect,
DT_VCENTER | DT_LEFT | DT_SINGLELINE, 0 );
rect.left = 3 * ( r.right - r.left ) / 4 + 10;
rect.top = r.top + 240;
rect.bottom = r.top + 260;
DrawTextEx( MemDC, L"КОРИСНИ ЛИНКОВИ", wcslen(L"КОРИСНИ ЛИНКОВИ"), &rect,
DT_VCENTER | DT_LEFT | DT_SINGLELINE, 0 );
SelectObject( MemDC, hfOld );
DeleteObject(hf);
}
void OnDraw( CDC* pDC)
{
RECT r; HWND hwnd;
GetClientRect(hwnd, &r);
CreateCompatibleDC(pDC->m_hDC); CBitmap bmp = CreateCompatibleBitmap(pDC->m_hDC, r.right - r.left, r.bottom - r.top),
CBitmap oldBmp = SelectObject(&bmp);
RECT rect;
rect.left = r.left;
rect.top = r.top;
rect.right = r.right;
rect.bottom = 120;
drawBackground( pDC, r );
drawHeader( pDC, rect, hbPozadina );
drawFooter( pDC, r, RGB( 0x48, 0xAC, 0xC6), RGB( 0x31, 0x83, 0x99 ) );
rect.left = ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 120 + ( r.bottom - r.top - 450 ) / 3;
rect.right = 150 + ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 270 + ( r.bottom - r.top - 450 ) / 3;
FillButton( pDC, rect, BlueFrame );
rect.left = 150 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 120 + ( r.bottom - r.top - 450 ) / 3;
rect.right = 300 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 270 + ( r.bottom - r.top - 450 ) / 3;
FillButton( pDC, rect, BlueFrame );
rect.left = ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 270 + 2 * ( r.bottom - r.top - 450 ) / 3;
rect.right = 150 + ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 420 + 2 * ( r.bottom - r.top - 450 ) / 3;
FillButton( pDC, rect, BlueFrame );
rect.left = 150 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.top = 270 + 2 * ( r.bottom - r.top - 450 ) / 3;
rect.right = 300 + 2 * ( 3 * ( r.right - r.left ) / 4 - 340 ) / 3;
rect.bottom = 420 + 2 * ( r.bottom - r.top - 450 ) / 3;
FillButton( pDC, rect, BlueFrame );
rect.left = 3 * ( r.right - r.left ) / 4 - 40;
rect.top = r.top + 140;
rect.right = rect.left + ( r.right - r.left ) / 4;
rect.bottom = rect.top + ( r.bottom - r.top - 190 );
drawOrangePanel( pDC, rect, RGB( 0xFF, 0xC8, 0xAA ), RGB( 0xFF, 0x96, 0x48 ) );
drawStrings( pDC, r );
drawImages( hdc, MemDC, r );
BitBlt(0, 0, r.right - r.left, r.bottom - r.top, pDC, 0, 0, SRCCOPY );
SelectObject(oldBmp );
DeleteObject(bmp); }
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
image = Image::FromFile(L".\\resources\\BG.png"), image1 = Image::FromFile(L".\\resources\\RGF.png"); btn5 = Image::FromFile(L".\\resources\\BTN5.emf"); hbPozadina = CreateSolidBrush( RGB( 230, 230, 230 ) );
hiAdmin = LoadIcon( hInst, MAKEINTRESOURCE(IDI_ICON2) );
bmpBTN1 = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP1) );
bmpBTN2 = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP10) );
bmpBTN3 = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP3) );
bmpBTN3a = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP5) );
bmpBTN4 = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP4) );
bmpSimbol = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP16) );
bmpInfo = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP6) );
bmpLink = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP7) );
bmpHelp = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP8) );
hbr = CreateSolidBrush( RGB( 255, 163, 94 ) );
BlueFrame = CreateSolidBrush( RGB(79, 129, 189) );
RECT rec;
GetClientRect( hwnd, &rec );
HWND hsUnosPodataka = CreateWindowEx( 0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
120 + ( rec.bottom - rec.top - 450 ) / 3,
150, 150, hwnd, (HMENU)4000, hInst, 0);
HWND hsPregledPodataka = CreateWindowEx( 0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
150 + 2 * ( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
120 + ( rec.bottom - rec.top - 450 ) / 3,
150, 150, hwnd, (HMENU)4001, hInst, 0);
HWND hsIzvestaj = CreateWindowEx(0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
270 + 2 * ( rec.bottom - rec.top - 450 ) / 3,
150, 150, hwnd, (HMENU)4002, hInst, 0);
HWND hsPretraga = CreateWindowEx(0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
150 + 2 * ( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
270 + 2 * ( rec.bottom - rec.top - 450 ) / 3,
150, 150, hwnd, (HMENU)4003, hInst, 0);
HWND hsInfoInfo = CreateWindowEx(0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 150,
( rec.right - rec.left ) / 4 - 20, 30, hwnd, (HMENU)4007, hInst, 0);
HWND hsInfoHelp = CreateWindowEx(0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 190,
( rec.right - rec.left ) / 4 - 20, 30, hwnd, (HMENU)4009, hInst, 0);
HWND hsInfoLink = CreateWindowEx(0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 230,
( rec.right - rec.left ) / 4 - 20, 30, hwnd, (HMENU)4008, hInst, 0);
HWND hsInfoKarta = CreateWindowEx(0, L"Static", L"", WS_VISIBLE | WS_CHILD | SS_NOTIFY,
3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 270,
( rec.right - rec.left ) / 4 - 20, rec.bottom - rec.top - 330,
hwnd, (HMENU)4010, hInst, 0);
}
return (LRESULT)0;
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case 4000:
case 4001:
case 4002:
case 4003:
case 4007:
case 4008:
case 4009:
case 4010:
MessageBeep(MB_ICONEXCLAMATION);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
break;
}
case WM_ERASEBKGND:
return (LRESULT)1; case WM_PAINT:
{
CDC* pDC = GetWindowDC(hwnd);
OnDraw(pDC);
}
return (LRESULT)0;
case WM_SIZE:
{
RECT rec;
GetClientRect( hwnd, &rec );
SetWindowPos( GetDlgItem( hwnd, 4000 ), NULL, ( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
120 + ( rec.bottom - rec.top - 450 ) / 3, 150, 150,
SWP_NOZORDER | SWP_NOCOPYBITS );
SetWindowPos( GetDlgItem( hwnd, 4001 ), NULL, 150 + 2 * ( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
120 + ( rec.bottom - rec.top - 450 ) / 3, 150, 150, SWP_NOZORDER | SWP_NOCOPYBITS);
SetWindowPos( GetDlgItem( hwnd, 4002 ), NULL, ( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
270 + 2 * ( rec.bottom - rec.top - 450 ) / 3, 150, 150, SWP_NOZORDER | SWP_NOCOPYBITS );
SetWindowPos( GetDlgItem( hwnd, 4003 ), NULL, 150 + 2 * ( 3 * ( rec.right - rec.left ) / 4 - 340 ) / 3,
270 + 2 * ( rec.bottom - rec.top - 450 ) / 3, 150, 150, SWP_NOZORDER | SWP_NOCOPYBITS );
SetWindowPos( GetDlgItem( hwnd, 4007 ), NULL, 3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 150,
( rec.right - rec.left ) / 4 - 20, 30, SWP_NOZORDER | SWP_NOCOPYBITS );
SetWindowPos( GetDlgItem( hwnd, 4008 ), NULL, 3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 190,
( rec.right - rec.left ) / 4 - 20, 30, SWP_NOZORDER | SWP_NOCOPYBITS );
SetWindowPos( GetDlgItem( hwnd, 4009 ), NULL, 3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 230,
( rec.right - rec.left ) / 4 - 20, 30, SWP_NOZORDER | SWP_NOCOPYBITS );
SetWindowPos( GetDlgItem( hwnd, 4010 ), NULL, 3 * ( rec.right - rec.left ) / 4 - 30, rec.top + 270,
( rec.right - rec.left ) / 4 - 20, rec.bottom - rec.top - 330, SWP_NOZORDER | SWP_NOCOPYBITS );
InvalidateRect( hwnd, NULL, FALSE );
}
return (LRESULT)0;
case WM_CTLCOLORSTATIC:
return (LRESULT)( (HBRUSH)GetStockObject(NULL_BRUSH) );
case WM_CLOSE:
{
DeleteObject(bmpSimbol);
DeleteObject(bmpBTN1);
DeleteObject(bmpBTN2);
DeleteObject(bmpBTN3);
DeleteObject(bmpBTN4);
DeleteObject(bmpInfo);
DeleteObject(bmpLink);
DeleteObject(bmpHelp);
DestroyIcon(hIcon);
DestroyIcon(hiAdmin);
DeleteObject(hbPozadina);
DeleteObject(hbr);
DeleteObject(BlueFrame);
delete image;
delete image1;
delete btn5;
DestroyWindow(hwnd);
}
return (LRESULT)0;
case WM_DESTROY:
{
PostQuitMessage(0);
}
return (LRESULT)0;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
hInst = hInstance; hIcon = LoadIcon( hInst, MAKEINTRESOURCE(IDI_ICON1));
WNDCLASSEX wc; HWND hwnd; MSG Msg;
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
INITCOMMONCONTROLSEX iccex;
iccex.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccex.dwICC = ICC_STANDARD_CLASSES ;
InitCommonControlsEx(&iccex);
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;
}
hwnd = CreateWindowEx( 0, L"Main_Window", L"Геотермист", WS_OVERLAPPEDWINDOW,
( GetSystemMetrics(SM_CXMAXIMIZED) - 1020 ) / 2,
( GetSystemMetrics(SM_CYMAXIMIZED) - 600 ) / 2,
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);
}
GdiplusShutdown(gdiplusToken);
return Msg.wParam;
}
</gdiplus.h></commctrl.h></windowsx.h></afxwin.h></windows.h>