本帖最后由 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
|