資源簡介
MaskWindow.zip
代碼片段和文件信息
//?MaskWindow.cpp?:?實(shí)現(xiàn)文件
//
#include?“stdafx.h“
#include?“MaskWindow.h“
//?CMaskWindow
LPCTSTR?CMaskWindow::m_lpszClassName=NULL;
IMPLEMENT_DYNAMIC(CMaskWindow?CWnd)
CMaskWindow::CMaskWindow()
{
m_bIsBlur=FALSE;
m_bIsMouse=FALSE;
m_hWndControl=NULL;
m_clrMask=0;
m_nMaskAlpha=100;
m_hCacheDC=NULL;
m_hCacheBitmap=NULL;
m_hCacheOldBitmap=NULL;
}
CMaskWindow::~CMaskWindow()
{
DestroyMask();
}
BEGIN_MESSAGE_MAP(CMaskWindow?CWnd)
ON_WM_ERASEBKGND()
ON_WM_PAINT()
ON_WM_MOVE()
ON_WM_DESTROY()
END_MESSAGE_MAP()
//創(chuàng)建遮罩窗口(父窗口句柄,是否模糊,是否鼠標(biāo)穿透,遮罩顏色,遮罩透明度)
BOOL?CMaskWindow::CreateMask(HWND?hWndParentBOOL?bIsBlurBOOL?bIsMouseHWND?hWndControlCOLORREF?clrMaskint?nAlpha)
{
if(hWndParent==NULL?||?!::IsWindow(hWndParent))
{
return?FALSE;
}
//------------------------------
DestroyMask();
m_bIsBlur=bIsBlur;
m_bIsMouse=bIsMouse;
m_hWndControl=hWndControl;
m_clrMask=clrMask;
m_nMaskAlpha=nAlpha;
if(m_bIsBlur)
{
m_bIsMouse=FALSE;
}
if(m_nMaskAlpha<0)
{
m_nMaskAlpha=0;
}
else?if(m_nMaskAlpha>255)
{
m_nMaskAlpha=255;
}
//------------------------------
DWORD?dwstyle?=?WS_CHILD;
DWORD?dwExstyle?=?NULL;
if(m_bIsMouse)
{
dwstyle?=?WS_POPUP;
dwExstyle?=?WS_EX_layerED?|?WS_EX_TRANSPARENT;
}
if(m_lpszClassName==NULL)
{
m_lpszClassName=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS
::LoadCursor?(NULL?IDC_ARROW)
(HBRUSH)::GetStockobject?(BLACK_BRUSH)
);
}
if(!CWnd::CreateEx(dwExstylem_lpszClassNameNULLdwstyle0000hWndParent(HMENU)NULL))
{
return?FALSE;
}
//------------------------------
AdjustPos();
if(m_bIsMouse)
{
SetlayeredWindowAttributes?(m_clrMask?m_nMaskAlpha?LWA_ALPHA);
}
else
{
DoEvents();
CreateCache();
ShowControl(SW_HIDE);
}
????BringWindowToTop?();
ShowWindow?(SW_SHOWNOACTIVATE);
//------------------------------
return?TRUE;
}
void?CMaskWindow::DestroyMask()
{
ShowControl(SW_SHOWNOACTIVATE);
if(::IsWindow(m_hWnd))
{
::DestroyWindow(m_hWnd);
}
if(m_hCacheDC)
{
Selectobject(m_hCacheDCm_hCacheOldBitmap);
Deleteobject(m_hCacheBitmap);
DeleteDC(m_hCacheDC);
m_hCacheDC=NULL;
m_hCacheBitmap=NULL;
m_hCacheOldBitmap=NULL;
}
}
//顯示隱藏子控件
void?CMaskWindow::ShowControl(int?nCmdShow)
{
HWND?hWndOwner=::GetWindow(m_hWndGW_OWNER);
if(!hWndOwner)
{
hWndOwner=::GetParent(m_hWnd);
}
//--------------------------
if(nCmdShow==SW_HIDE)
{
HWND?hWndChild=::GetWindow(hWndOwnerGW_CHILD);
while(hWndChild)
{
if(hWndChild!=m_hWnd?&&?hWndChild!=m_hWndControl)
{
if(::IsWindowVisible(hWndChild))
{
::ShowWindow(hWndChildSW_HIDE);
m_hWndChildArray.Add(hWndChild);
}
}
hWndChild=::GetWindow(hWndChildGW_HWNDNEXT);
}
}
else
{
int?nCount?=?m_hWndChildArray.GetCount();
for(int?i=0;i {
::ShowWindow(m_hWndChildArray[i]nCmdShow);
}
m_h
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-10-31?20:12??遮罩窗口\
?????文件??????372736??2016-10-31?20:08??遮罩窗口\MaskWndTest.exe
?????目錄???????????0??2016-10-31?20:11??遮罩窗口\VC源碼\
?????目錄???????????0??2016-10-31?20:11??遮罩窗口\VC源碼\MaskWndTest\
?????文件????????8973??2016-10-31?20:08??遮罩窗口\VC源碼\MaskWndTest\MaskWindow.cpp
?????文件????????1224??2016-10-31?20:08??遮罩窗口\VC源碼\MaskWndTest\MaskWindow.h
?????文件????????1841??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest\MaskWndTest.cpp
?????文件?????????506??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest\MaskWndTest.h
?????文件????????5350??2016-10-31?20:04??遮罩窗口\VC源碼\MaskWndTest\MaskWndTest.rc
?????文件????????5709??2016-10-31?20:04??遮罩窗口\VC源碼\MaskWndTest\MaskWndTest.vcproj
?????文件????????4109??2016-10-31?19:02??遮罩窗口\VC源碼\MaskWndTest\MaskWndTestDlg.cpp
?????文件?????????864??2016-10-31?18:57??遮罩窗口\VC源碼\MaskWndTest\MaskWndTestDlg.h
?????文件????????2835??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest\ReadMe.txt
?????目錄???????????0??2016-10-31?20:11??遮罩窗口\VC源碼\MaskWndTest\res\
?????文件???????49078??2016-10-31?20:04??遮罩窗口\VC源碼\MaskWndTest\res\banner.bmp
?????文件???????21630??2005-12-08?14:56??遮罩窗口\VC源碼\MaskWndTest\res\MaskWndTest.ico
?????文件?????????367??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest\res\MaskWndTest.rc2
?????文件?????????911??2016-10-31?20:04??遮罩窗口\VC源碼\MaskWndTest\resource.h
?????文件?????????178??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest\stdafx.cpp
?????文件????????2540??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest\stdafx.h
?????文件?????????898??2016-10-31?17:30??遮罩窗口\VC源碼\MaskWndTest.sln
?????目錄???????????0??2016-10-31?20:11??遮罩窗口\易語言源碼\
?????文件??????143642??2016-10-31?00:15??遮罩窗口\易語言源碼\彗星遮罩窗口模塊.e
?????文件??????121426??2016-10-31?00:15??遮罩窗口\易語言源碼\彗星遮罩窗口模塊.ec
?????文件???????34776??2016-10-29?22:09??遮罩窗口\易語言源碼\遮罩窗口演示.e
評論
共有 條評論