返回列表 发帖

[交流] 第十九讲 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对象忘记删除了
  1. #include <DirUIGui.au3>

  2.  

  3. $hGui = _DirUIGui_CreatWin("QQ2013", 300, 200, -1, -1)

  4. _DirUIGui_CreatePic("pic.jpg", 20, 40, 100, 100);图片地址自己修改

  5. _DirUIGui_CreateLable("程序测试中,功能逐步增加,希望有人能一起做。", 130, 40, 150, 120)

  6.  

  7. $bt1 = _DirUIGui_CreateButton("背景图片", 30, 160, 80, 24)

  8. $bt2 = _DirUIGui_CreateButton("背景颜色", 120, 160, 80, 24)

  9. $bt3 = _DirUIGui_CreateButton("退出", 210, 160, 80, 24)

  10.  

  11. _DirUIGui_WinSetState(@SW_SHOW, $hGui)

  12.  

  13. Local $nMsg, $ret

  14.  


  15.         $nMsg = _DirUIGui_GetMsg()

  16.         Switch $nMsg

  17.                 Case -3;按关闭按钮返回消息值-3,这里窗口已经销毁,程序中没有对关闭按钮进行手工处理,所以暂时不拦截了。

  18.                         Exit

  19.                 Case $bt3

  20.                         $ret = _DirUIGui_MsgBox("警告", "您确定要退出程序吗?", $hGui);返回 -3为按了关闭按钮,1为确定按钮,0为取消按钮

  21.                         If $ret = 1 Then

  22.                                 ExitLoop

  23.                         EndIf

  24.                 Case $bt1

  25.                         _DirUIGui_SetWinSkin($hGui, "back.jpg");可以用图片文件设置皮肤,图片地址自己修改

  26.                 Case $bt2

  27.                         _DirUIGui_SetWinSkin($hGui, RandomColor());颜色格式argb

  28.         EndSwitch


  29.  

  30. Func RandomColor()

  31.         Local $r = Random(0, 255)

  32.         Local $g = Random(0, 255)

  33.         Local $b = Random(0, 255)

  34.         Local $color = BitOR(0xFF000000, _;Alpha

  35.                                 BitShift($r, -16), _;Red

  36.                                 BitShift($g, -8), _;Green

  37.                                 $b);Blue

  38.         Return $color


复制代码 高亮切换

下面的代码回复后可见,保存为DirUIGui.au3
[hide][/hide]
附件: 您需要登录才可以下载或查看附件。没有帐号?加入
11

评分人数

  • acbs

  • 南一

  • xms77

  • komaau3

  • sdc7

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

TOP

界面太漂亮了

TOP

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

TOP

GUI确实要补一补了

TOP

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

TOP

先评分,后阅读。
自己知道的,尽量告诉别人,自己不知道的,虚心学习

TOP

强大。。。。
孔子曰,中午不睡,下午崩溃;孟子曰,孔子说的对。
http://blog.sina.com.cn/tryhi

TOP

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

TOP

GDI+好强大啊。。

TOP

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

TOP

仿佛看到了新版QQ2013

TOP

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

TOP

回复 1# seniors


    酷。先收藏备用。

TOP

牛啊

TOP

返回列表