SetLayeredWindowAttributes 创建不规则窗口(此处为椭圆)
来源:互联网 发布:tcp端口和udp端口 编辑:程序博客网 时间:2024/06/04 19:29
创建一个基于Dialog的工程(MFC)
在 BOOL CDialogXXXApp::InitInstance()中添加以下代码
SetDialogBkColor(RGB(100, 100, 228), RGB(225, 100, 100));
//将下面店面放在初始化函数中
在 BOOL CDialogXXXDlg::OnInitDialog()中添加以下代码
//设置类型,添加WS_EX_LAYERED 早起版本没有这个需要直接设定为 0x80000
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *DFUNC)(HWND,COLORREF,BYTE,DWORD);
DFUNC Func = NULL;
fun=(DFunc)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->GetSafeHwnd(),RGB(100, 100, 228)/*要透明的颜色*/,255/*0-255 0:透明*/,2 | 1);
FreeLibrary(hInst);
}
在 void CDialogXXXDlg::OnPaint() 中添加以下代码
if (IsIconic())
{
}
else {
CClientDC *pDC = new CClientDC(this);
CRect rectClient;
GetClientRect(rectClient); //GetDlgItem(IDC_BUTTON5)->
CBrush bsh;
bsh.CreateSolidBrush(RGB(122, 122, 255));
CBrush* pOldbsh = pDC->SelectObject(&bsh);
pDC->Ellipse(rectClient);//只要是背景色不是RGB(100, 100, 228)的区域都可以显示出来,
//这样就可以对要显示的区域设置不同的颜色来显示。
pDC->SelectObject(pOldbsh);
pOldPen = pDC->SelectObject(&penBlue);
}
*以下是说明
BOOL SetLayeredWindowAttributes( HWND hwnd, // handle to the layered window COLORREF crKey, // specifies the color key BYTE bAlpha, // value for the blend function DWORD dwFlags // action);
hWnd是透明窗体的句柄, crKey为掩码的颜色,可以用RGB(r,g,b)来指定。 bAlpha是不透明度,取值范围是(0,255),其中0代表全透明,255代表不透明。 dwFlags是透明方式,可以取两个值: 当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效; 当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。 LWA_ALPHA = 0x2 LWA_COLORKEY=0x1 也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。
- SetLayeredWindowAttributes 创建不规则窗口(此处为椭圆)
- 创建不规则窗口
- 创建一不规则窗口
- 如何创建不规则窗口
- 创建不规则窗口
- 创建不规则形状窗口
- swt创建不规则窗口
- mfc创建不规则窗口
- MFC创建不规则窗口
- VC创建不规则窗口
- 创建WPF不规则窗口
- 以BMP图片为蓝本创建不规则窗口
- wince下创建不规则窗口
- 用VB创建不规则窗口
- 转帖:创建不规则形状窗口
- VC创建自定义不规则窗口
- 透明化窗口SetLayeredWindowAttributes
- 透明化窗口SetLayeredWindowAttributes
- 学习strut2的心得
- GNU通用公共授权(GNU General Public License)中英文版全文 收藏
- GridView的操作大全
- SE16如何删除或合修改数据库表
- Windows 下启动前删除Resin日志等文件的bat命令
- SetLayeredWindowAttributes 创建不规则窗口(此处为椭圆)
- asp.net获取服务器信息
- 使用AdRotatorWeb服务器控件显示数据库中的广告
- pb通过jdbc连接mysql
- [原创]mini2440如何ping到pc
- 冰激凌
- android opengl es 三角形、正方形自动旋转
- 国土资源部关于加快推进土地利用规划数据库建设的通知
- [zt] 初学java多线程