用Win32 API创建不规则窗口

Win32创建异形窗口 异型窗口 先来说说什么是异形窗口 阅读详情

Win32 API支持创建不规则窗口,现在很多软件使用这个技术,如:QuickTime,Windows Media Player 7等。

A

B

使用API创建不规则窗口主要有两种方式,即矢量形状叠加(布尔运算)和位图区域两种。无论哪种方式,都可以实现上面两图的效果。在编写这样的窗口代码前,我们必须清楚要创建的窗口的形状是否复杂,如图片B的窗口很复杂,为极不规则的窗口,很难使用矢量形状叠加的方式创建,那么可以使用区域,指定位图的透明色实现;而图片A是圆角矩形,使用简单的矢量形状叠加即可。之所以这样,是为了运行效率考虑,对于普通的不规则窗口,矢量叠加方式速度比较快。当然,位图区域方式可以创建任何形状的窗口,如果你不需要考虑运行效率(实际两种方式速度差异很小),那么不必考虑矢量形状叠加的办法,直接看位图区域的例子即可。

 

MoreWindows界面编程第三篇 异形窗口 1 博客文章《Windows界面编程第三篇 异形窗体 上》的配套程序,示范了如何创建以图片为对话框形状话的异形窗口,程序注释翔实,讲解细致,可读性强。 立即下载

相关推荐

BitmapToRegion 函数实现不规则窗口/异形窗口源码

BitmapToRegion 函数实现不规则窗口/异形窗口,文档带说明,给你开发有特效的窗口界面。本源码用Windows API实现,网上的例子都是MFC实现。用法BitmapToRegion(位图,透明色,容差色/*用于去锯齿*/)。用 DevCPP 在 Windows7 64位平台上编译通过。

从0开始学习《Windows程序设计》:窗口窗口!!!

一、消息框 在之前的学习中,我们通过MessageBox创建了一个消息框程序! 消息框是什么,消息框就是我们用来跟用户交流的界面!! /* ------------------------------------------------------------------- MyWindows.c -- 基本窗口模型 《Windows 程序设计(SDK)》视频教程 ----------------...

aixintianshideshouhu的博客 8619

API win32程序 不规则窗口

http://www.cnblogs.com/moodlxs/archive/2012/09/29/2708351.html

Win32API不规则窗口制作

一、前述 也许您在其他软件中经常看到下面这样的界面,除了感叹视觉设计的绚丽外,也注意到了和其他软件的不同,窗口不是正规的正方形。这就是传说中的非规则窗体,也叫多边形窗口不规则窗体(=。=名字够俗的) 最初找这方面的资料,学习制作一个类似程序,结果发现很多资料都是说的不是很明白,或者是UI控件之类的东东,有一些范例程序还都运行不起来,经过一番折腾,发现一个共...

weixin_33895657的博客 366

Windows创建不规则窗口

        不规则窗口的实现是通过区域对象来实现,通过MFC中CRgn创建不规则区域来实现,好吧,下面就来实现一个小精灵不规则窗口: 准备一张背景为黑色的图片    接下来在初始化对话框中加载位图,创建一个不规则区域,原理就是获取每一个像素点颜色,如果为黑色,就将他剔除。  更多精彩教程,视频教学、源码分享请加入QQ群:569268376     //加载一下位图 ...

码农 1011

windows不规则窗体创建的几种方法

一、序言   在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣。但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先的矩形窗体,将会使这类程序更添情趣。典型的例子有windows 自代的Media Player,新版本的Med

孤身我路 1170

API不规则窗口

Windows提供的只是标准的矩形窗口,要想建立一个不规则窗口就需要调用API函数来实现。建立一个不规则窗口,一般是先用创建区域的API函数建立一个不规则的区域,再用API函数SetWindowRgn改变窗口的区域。SetWindowRgn函数能改变一个窗口的区域,该函数有三个参数,第一个参数hWnd是欲设置区域的窗口句柄,第二个参数hRgn是欲设置的区域,第三个参数bRedraw一般设为true,即立即重画窗口。同样,X1、Y1和X2、Y2坐标点所确定的矩形为正方形时,创建的就是一个圆形。

Onebound_Eason的博客 153

WINDOWS下获得DLL所在目录的代码

  获取执行文件所在目录: static char* getRunningPath(const char* pExe, char* pBuffer, const UINT appPathSize) { if (GetModuleFileNameA(GetSelfModuleHandle(), pBuffer, appPathSize) == 0) { return NULL; } ...

柳鲲鹏 1316

vc 获得windows系统目录

WCHAR szPath[MAX_PATH];  // 获得系统目录   GetWindowsDirectoryW( szPath, sizeof(szPath) );  // 格式化文件路径   wcscat( szPath, L"//123.txt" ); 

河边杨柳 1373

怎样用VB获得Windows各类系统目录

现在有很多关于如何用VB获得Windows目录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档"的路径并不是固定的,可以由自己设定, 也有可能因为系统的安装路径不同而不同),那又该如何处理呢?下面我们来具体谈谈如何用VB获得这种路径。  先向大家介绍两个API函数,这两个函数分别是SHGetSpecia...

miaozk2006的专栏 329

如何用VB获得Windows各类系统目录

如何用VB获得Windows各类系统目录 现在有很多关于如何用VB获得Windows目录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档"的路径并不是固定的,可以由自己设定,也有可能因为系统的安装路径不同而不同),那又该如何处理呢?下面我们来具体谈谈如何用VB获得这种路径。  先向大家介绍两个API函...

anlei2455的博客 152

Windows 编程获得用户目录

随着XP对用户的管理,编写程序时应该处理多用户的情况,所以程序运行期需要修改的文件(配置文件等)应该存放在用户目录中。char lpProfileDir[255]; DWORD size=255; memset(lpProfileDir, 0, 255); HANDLE hToken=0;BOOL bres1 = OpenProcessToken(GetCurrentProcess(), TOKE

Ziva的专栏 1376

win32窗口 搭建

//-------win32 窗口项目-------- // 头文件 #include<Windows.h> #include <TCHAR.h> LRESULT CALLBACK WinProc(HWND hWnd, UINT uID, WPARAM wParam, LPARAM lParam); //主函数 int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPreInstance, _In_ L.

weixin_46432495的博客 261

SetWindowRgn,可用于创建不规则窗口

函数功能描述:设置窗口区域 .函数原型 int SetWindowRgn(   HWND hWnd,     // 要设置其区域的窗口句柄   HRGN hRgn,     // 区域句柄   BOOL bRedraw   // 重画标志 ); 参数 hWnd 要设置其区域的窗口的句柄. hRgn 区域的句柄.该函数把窗口的区域设置成由此参数指定的区域.系统将仅绘制窗

多思多做 1254

c++ win32 裁剪窗口为圆角矩形窗口

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { RECT rc; HRGN hRgn; switch (message) { case WM_CREATE: MoveWindow(hWnd, 0, 0, 200, 100, TRUE); break; case WM_COMMAND: { .

dxm809的博客 3576

Windows核心编程_异型窗口

异型窗口Windows200在窗口中引入的WS_EX_LAYERED风格,并搭配:SetLayeredWindowAttributes API实现的,这里所说的异型窗口不是指椭圆型的窗口或三角型之类的窗口:这一类的窗口在早期的Windows里就已经规定了的,只需要在创建窗口时修改stsy风格就可以了,这里所说的异型窗口不规则口,比如一些游戏界面:类似这种在Windows并没有显示指定的风格界面...

17岁boy的博客 1546

Windows界面编程第四篇 异形窗体 高富帅版

上一篇《Windows界面编程第三篇 异形窗体 普通版》介绍了异形窗口(异形窗体)的创建,其主要步骤为——先通过创建位图画刷来做窗口的背景画刷,再通过SetWindowLong为窗体加上WS_EX_LAYERED属性,然后使用SetLayeredWindowAttributes指定窗口的透明色来完成窗口形状的调整。并且为了使异形窗口支持鼠标的拖曳,在WM_LBUTTONDOWN消息中作了特殊处理。

MoreWindows Blog 2万+

Windows核心编程_异型窗口(续)

上一篇文章介绍的是使用SetLayeredWindowAttributes API来实现异型窗口,但是很明显效果很差劲,在剔除颜色的过程中凹凸边缘区域的像素点会剔除的非常不明显,在查找信息之后,得出的说法是当显示屏在显示图像的时候在颜色重叠的地方会产生颜色色差,而SetLayeredWindowAttributes 又是从屏幕中取出dc颜色的! 但这次我们使用UpdateLayeredWind...

17岁boy的博客 1175
下一篇: 穷举密码算法
breath
博客等级 码龄26年 6粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值