游戏开发论坛

 找回密码
 立即注册
搜索
楼主: nowpaper

Win32API实现不规则窗口

[复制链接]

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 14:55:00 | 显示全部楼层

Re: Win32API实现不规则窗口

第二步,修改CreateWindow特定参数,请阅读注释说明
sf_2005823145439.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 14:55:00 | 显示全部楼层

Re: Win32API实现不规则窗口

第三步,将窗口的菜单参数设置为空,这样就可以去掉了菜单栏
sf_2005823145512.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 14:56:00 | 显示全部楼层

Re: Win32API实现不规则窗口

     最终效果:

      现在可以看到这个窗口已经变成了我们需要的样子,下面就要为它画上皮肤,值得注意的是,此时,您需要使用alt+F4来关闭窗口。
sf_2005823145547.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 14:57:00 | 显示全部楼层

Re: Win32API实现不规则窗口

9.为窗口画上图像
      添加如下代码到WM_PAINT消息处理中
      绘制的代码位置您可以自定,例如您自己的循环逻辑上,现在只是将图片显示到窗体的hdc上而已。
sf_2005823145642.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 14:57:00 | 显示全部楼层

Re: Win32API实现不规则窗口

10.运行一下效果看看
      哈哈,我们得到了一个漂亮的图像,简直和真正的手机一样悬浮在您的桌面上面,好了,从现在开始您可以套用上面的方法,为自己开发开发一个特别效果的界面。
sf_2005823145727.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 14:58:00 | 显示全部楼层

Re: Win32API实现不规则窗口

11.如何拖动
      您或许已经发现了仍然存在的重大问题,就是这个窗口没有标题栏,怎么才能拖动呢,总不能让它永远放在一个地方,那么我们下面就来解决这个问题。
      解决的方法并不难,请在参照下面的代码,添加WM_LBUTTONDOWN消息,并增加一行SendMessage。
      作用为,当点击鼠标左建时发送一个使Windows认为鼠标在窗口标题上WM_NCHITTEST消息给窗口,窗口处理WM_NCHITTEST来解决移动问题。
      您可以在WM_LBUTTONDOWN作一些判断,这样,程序会依据您的设定才可以移动——例如指定一个被点击区域才可以移动的if
sf_200582314581.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 15:01:00 | 显示全部楼层

Re: Win32API实现不规则窗口

12.完成
      好了,您可以运行一下程序,并且到处拖动一下,怎么样?不错吧,其实花里胡哨的软件界面制作就是这么简单。
      上面的程序在例子程序中拥有
      例子程序在下面的附件中

sf_200582315115.rar

648.27 KB, 下载次数:

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 15:03:00 | 显示全部楼层

Re: Win32API实现不规则窗口

四、题外:结合DirectX
      结合在DirectX也可以实现不规则的窗口,但是会对摄像机的成像造成影响,不过这都好说,关键在这里我们可以确定的是,这种方法应用在窗口模式下的DX程序仍然有效。
      请参见例子程序DXRngWin,当然,您需要安装DX8SDK才可以正常编译,DX8SDK精简版在Gameres的资源库中有。
点击这里下载DirectX8.1 SDK library & include
sf_200582315252.jpg

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2005-8-23 16:40:00 | 显示全部楼层

Re: Win32API实现不规则窗口

我一直都爱使用SetWindowRgn来做屏保之类的东西,不过不用蒙板,直接设置透明色。
[em13]
sf_2005823164018.jpg

12

主题

2010

帖子

2028

积分

金牌会员

Rank: 6Rank: 6

积分
2028
 楼主| 发表于 2005-8-23 16:43:00 | 显示全部楼层

Re:Win32API实现不规则窗口

楼上的方法很方便,直接对skin图像上取色设置镂空区域,可以节省1张图片的储存,
大家可以尝试尝试哦^_^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 02:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表