上一篇说了大概的思路,但是写的时候就可能遇到各种问题,下面给出完整的步骤源代码。
先建立一个MFC的对话框程序,然后添加类CTransparentWnd,以下给出改动后的代码。
1、CTransparentWnd类
#pragma once
class CTransparentWnd:public CWnd
{
public:
CTransparentWnd(void);
~CTransparentWnd(void);
public:
BOOL Create(HWND hpWnd);
public:
void OnParentMoved();
private:
BOOL m_bCreated;
};
#include "StdAfx.h"
#include "TransparentWnd.h"
CTransparentWnd::CTransparentWnd(void)
:m_bCreated(FALSE)
{
}
CTransparentWnd::~CTransparentWnd(void)
{
}
BOOL CTransparentWnd::Create(HWND hpWnd)
{
LPCTSTR clsName = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
0,(HBRUSH)GetStockObject(BLACK_BRUSH));
if(!CWnd::CreateEx(WS_EX_LAYERED|WS_EX_TOOLWINDOW,
clsName,NULL,WS_POPUP,0,0,0,0,hpWnd,NULL))
{
return FALSE;
}
SetLayeredWindowAttributes(0,100,LWA_ALPHA);
return m_bCreated = TRUE;
}
void CTransparentWnd::OnParentMoved()
{<