BOOLSetLayeredWindowAttributes(
HWND hwnd,//透明窗体的句柄 COLORREF crKey,//掩码的颜色 BYTE bAlpha,//不透明度 DWORD dwFlags//透明方式 );
LONG nRet =::GetWindowLong(hWnd, GWL_EXSTYLE);
nRet= nRet |WS_EX_LAYERED;
::SetWindowLong(hWnd, GWL_EXSTYLE, nRet);
//-------------------------------------------------------------------------//文件名 : WinMain.cpp//创建者 : 方煜宽//邮箱 : fangyukuan@gmail.com//功能描述 : 透明窗体////-------------------------------------------------------------------------#include<windows.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);constintX0 =120;constintY0 =50;constintWIDTH =800;constintHEIGHT =600;intWINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,intnShowCmd)
{
HWND hWnd;
MSG msg;
TCHAR lpszClassName[]= TEXT("窗口");
WNDCLASS wc;
wc.style.= CS_HREDRAW |CS_VREDRAW;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=::LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=::LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszClassName=lpszClassName;
RegisterClass(&wc);
hWnd=CreateWindow(lpszClassName,
TEXT("Windows"),
WS_OVERLAPPEDWINDOW,
X0, Y0, WIDTH, HEIGHT,
NULL,
NULL,
hInstance,
NULL);
::ShowWindow(hWnd, SW_SHOWNORMAL);
::UpdateWindow(hWnd);//实现透明必须设置WS_EX_LAYERED标志LONG nRet =::GetWindowLong(hWnd, GWL_EXSTYLE);
nRet= nRet |WS_EX_LAYERED;
::SetWindowLong(hWnd, GWL_EXSTYLE, nRet);while(::GetMessage(&msg, NULL,0,0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}returnmsg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{switch(msg)
{caseWM_LBUTTONDOWN:
{
::MessageBeep(0);
::SetLayeredWindowAttributes(hWnd,0,123, LWA_ALPHA);//设置半透明}break;caseWM_RBUTTONDOWN:
{
::MessageBeep(0);
::SetLayeredWindowAttributes(hWnd,0,255, LWA_ALPHA);//设置不透明}break;caseWM_DESTROY:
::PostQuitMessage(0);break;default:return::DefWindowProc(hWnd, msg, wParam, lParam);
}return0;
}