1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
// includes
#include <windows.h>
#include <stdio.h>
#include "res.h"
// defines
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#define bitmapHeight 217
#define bitmapWidth 433
#define g_ColourKey 0xFF00FF // 0,0,255(pink) in hex RGB
HBITMAP hSkinMBmp = NULL;
HBITMAP hSkinMBmp2 = NULL;
int i = 0;
void DestroyCaption(HWND hwnd, int windowWidth, int windowHeight)
{
DWORD dwStyle = GetWindowLong(hwnd, GWL_STYLE);
dwStyle &= ~(WS_CAPTION|WS_SIZEBOX);
SetWindowLong(hwnd, GWL_STYLE, dwStyle);
InvalidateRect(hwnd, NULL, true);
SetWindowPos(hwnd, NULL, 0,0,windowWidth, windowHeight, SWP_NOMOVE | SWP_NOZORDER);
}
void PaintImage(HWND hwnd, HGDIOBJ hgdiobj, int nXDest, int nYDest, int nWidth, int nHeight)
{
BITMAP bm;
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
HDC dcSkin = CreateCompatibleDC(hdc);
GetObject(hgdiobj, sizeof(bm), &bm);
SelectObject(dcSkin, hgdiobj);
BitBlt(hdc, nXDest, nYDest, nWidth, nHeight, dcSkin, 0, 0, SRCCOPY);
EndPaint(hwnd, &ps);
}
BOOL CALLBACK dialog(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
switch(Message)
{
case WM_INITDIALOG:
{
if(SetLayeredWindowAttributes != NULL)
{
if(i < 1) {
DestroyCaption(hwnd,bitmapWidth,bitmapHeight);
i++;
}
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes( hwnd, g_ColourKey, 0, LWA_COLORKEY);
}
break;
}
case WM_LBUTTONDOWN:
{
PostMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION,0);
break;
}
case WM_CLOSE:
{
DeleteObject(hSkinMBmp);
DeleteObject(hSkinMBmp2);
EndDialog(hwnd, 0);
break;
}
case WM_PAINT:
{
PaintImage(hwnd, hSkinMBmp, 0, 0, bitmapWidth, bitmapHeight);
PaintImage(hwnd, hSkinMBmp2, 400, 0, 21, 19);
break;
}
case WM_COMMAND:
default:
return FALSE;
}
return TRUE;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
hSkinMBmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_MSKIN));
hSkinMBmp2 = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_MSKIN2));
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, dialog);
}
|