seniors 发表于 2013-7-23 20:59:08

第十九讲 GDI+窗口自绘带控件

本帖最后由 seniors 于 2013-7-24 09:52 编辑

窗口自绘说的普通点就是对窗口的各种状态进行自行绘制,不出现系统的各界面
1、WM_PAINT
自绘最主要的是对WM_PAINT消息的处理,在本例中这个消息用_DirUIGui_onPaint处理
2、WM_NCHITTEST
为了让窗口的控件能响应鼠标信息,就要响应WM_NCHITTEST消息,判断鼠标在什么位置,作出相应的反应,参看_DirUIGui_onNcHittest
也可以在WM_MOUSEMOVE中判断
3、WM_NCLBUTTONUP
这个用于响应窗口标题栏鼠标点击事件,见_DirUIGui_onNcLButtonUp,他应该要结合WM_NCHITTEST返回值来做相应处理
4、WM_LBUTTONUP
这个用于响应窗口客户区鼠标点击事件,也就是点击控件后,怎么处理。见_DirUIGui_onLButtonUp,他应该要结合WM_NCHITTEST返回值来做相应处理
这几个消息是主要处理的
下面的例子中,现在能做
1、创建窗口,并给窗口设置皮肤
2、创建按钮控件
3、创建动态标签,在WM_NCHITTEST中还没有来的及仔细细分控件,让动态的动态,静态的静态。
4、创建图片控件
所有控件多没有设置鼠标按下状态
如果我能做出编辑框的会,就再写一讲,如果写不出编辑框讲座就到此结束了。谢谢大家
希望能看懂的可以进一步完善,里面有好多是直接指定数值,并且没有判断是否成功
另外控件大小,颜色等的设置也没空写,太烦了


我很喜欢这个图片控件,看下面的图是不是很象QQ的布局?

更新一下,image对象忘记删除了
#include <DirUIGui.au3>

$hGui = _DirUIGui_CreatWin("QQ2013", 300, 200, -1, -1)
_DirUIGui_CreatePic("pic.jpg", 20, 40, 100, 100);图片地址自己修改
_DirUIGui_CreateLable("程序测试中,功能逐步增加,希望有人能一起做。", 130, 40, 150, 120)

$bt1 = _DirUIGui_CreateButton("背景图片", 30, 160, 80, 24)
$bt2 = _DirUIGui_CreateButton("背景颜色", 120, 160, 80, 24)
$bt3 = _DirUIGui_CreateButton("退出", 210, 160, 80, 24)

_DirUIGui_WinSetState(@SW_SHOW, $hGui)

Local $nMsg, $ret

While 1
        $nMsg = _DirUIGui_GetMsg()
        Switch $nMsg
                Case -3;按关闭按钮返回消息值-3,这里窗口已经销毁,程序中没有对关闭按钮进行手工处理,所以暂时不拦截了。
                        Exit
                Case $bt3
                        $ret = _DirUIGui_MsgBox("警告", "您确定要退出程序吗?", $hGui);返回 -3为按了关闭按钮,1为确定按钮,0为取消按钮
                        If $ret = 1 Then
                                ExitLoop
                        EndIf
                Case $bt1
                        _DirUIGui_SetWinSkin($hGui, "back.jpg");可以用图片文件设置皮肤,图片地址自己修改
                Case $bt2
                        _DirUIGui_SetWinSkin($hGui, RandomColor());颜色格式argb
        EndSwitch
WEnd

Func RandomColor()
        Local $r = Random(0, 255)
        Local $g = Random(0, 255)
        Local $b = Random(0, 255)
        Local $color = BitOR(0xFF000000, _;Alpha
                                BitShift($r, -16), _;Red
                                BitShift($g, -8), _;Green
                                $b);Blue
        Return $color
EndFunc
下面的代码回复后可见,保存为DirUIGui.au3
**** Hidden Message *****

user3000 发表于 2013-7-23 21:43:37

炫得眼要瞎了!
真要赞一个,界面太漂亮了

破帽遮颜 发表于 2013-7-23 22:06:05

界面太漂亮了

seeking 发表于 2013-7-23 22:39:23

大牛,这个界面太炫了!!

浪迹红客 发表于 2013-7-23 22:39:53

GUI确实要补一补了

seeking 发表于 2013-7-23 22:51:26

经测试,所占用的内存非常小,相当强大。

lpxx 发表于 2013-7-23 23:19:40

先评分,后阅读。

tryhi 发表于 2013-7-23 23:54:49

强大。。。。

jsgh1983 发表于 2013-7-24 08:39:12

楼主的GDI这块厉害的一塌糊涂!学习!!!

menfan1 发表于 2013-7-24 09:34:37

GDI+好强大啊。。

txen548 发表于 2013-7-24 10:09:10

炫得眼要瞎了!
真要赞一个,界面太漂亮了

fangbaiyu 发表于 2013-7-24 10:52:20

仿佛看到了新版QQ2013

jirunyang 发表于 2013-7-24 12:04:10

非常漂亮,非常好的教程,感谢!

楼上风云 发表于 2013-7-24 12:58:25

回复 1# seniors


    酷。先收藏备用。

jiankeqcaf 发表于 2013-7-24 17:05:47

牛啊{:face (125):}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 第十九讲 GDI+窗口自绘带控件