Also, has anyone ever got a semi-transparent window working in Dev-C++?
Well, I don't normally use Dev-C++ but I converted a MS compilable tidbit to Dev-C++ and it appears to work:
Code:
#define IDD_TOOLBAR 1000
#define IDC_TRANSPARENCY 2000
#define IDC_ENDIT 3000
Code:
#include <windows.h>
#include "resource.h"
IDD_TOOLBAR DIALOGEX 0, 0, 98, 52
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "My Transparent Dialog"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "&Toggle Transparent",IDC_TRANSPARENCY,7,7,84,14
PUSHBUTTON "&Exit",IDC_ENDIT,7,31,84,14
END
Code:
#pragma comment( lib, "user32.lib" )
#include <windows.h>
#include "resource.h"
#define WS_EX_LAYERED 0x00080000L
#define LWA_ALPHA 2
BOOL bToggleTransparency = TRUE;
typedef BOOL (WINAPI* SLWA)(HWND, COLORREF, BYTE, DWORD);
SLWA SetLayeredWindowAttributes = 0;
LRESULT CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
HINSTANCE hInstance;
int main(void)
{
HMODULE hDLL = GetModuleHandle("USER32.DLL");
SetLayeredWindowAttributes = (SLWA)GetProcAddress(hDLL, "SetLayeredWindowAttributes");
if( SetLayeredWindowAttributes == NULL)
MessageBox(NULL, "SetLayeredWindowAttributes is NULL VALUE", " ",MB_OK);
DialogBox(hInstance,
MAKEINTRESOURCE(IDD_TOOLBAR),
NULL,
(DLGPROC) DlgProc);
return 0;
}
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch(Msg)
{
case WM_INITDIALOG:
{
DWORD dwStyle = GetWindowLong(hWndDlg, GWL_EXSTYLE);
dwStyle = dwStyle | WS_EX_LAYERED;
SetWindowLong(hWndDlg, GWL_EXSTYLE, dwStyle);
SetLayeredWindowAttributes(hWndDlg, 0, (255 * 70) / 100, LWA_ALPHA);
return TRUE;
}
case WM_COMMAND:
switch(wParam)
{
case IDC_TRANSPARENCY:
{
if(bToggleTransparency)
SetLayeredWindowAttributes(hWndDlg, 0, (255 * 70) / 100, LWA_ALPHA);
else
SetLayeredWindowAttributes(hWndDlg, 0, 255, LWA_ALPHA);
bToggleTransparency = !bToggleTransparency;
break;
}
case IDC_ENDIT:
EndDialog(hWndDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}