【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 2853|回复: 0

【Quartz控件系列教程】Tut03 在UI中增加按钮

[复制链接]
发表于 2007-12-19 19:06:13 | 显示全部楼层 |阅读模式

这是Quartz--v0.041版本的第三个例子,我们依然使用前一个例题的代码完成。如果没有看的,请先看【Quartz--v0.04例题】Tu....02 在UI中试用图片[长]


在本次例题中,主要完成增加一个按钮。随着按钮的增加如,整个UI的窗口就变得活跃起来了,越来越像一个真正的UI了不是吗?



首先拷贝上一个例题到新的目录,然后编译确保可以通过。

我们继续增加一个图片控件,为的是给按钮找一个地方放。具体过程我就不说了,增加一个面板,代码如下:

SetRect(&r3,16,164,390,400);
g_cImgDolig.Init(50,80,374,237,r3);

然后进入我们的正体,新增加一个按钮:

CButton g_button; //按钮

这个控件的使用方法和静态图片控件完全一样。

SetRect(&r1,185,0,316,29);
SetRect(&r2,185,31,316,60);
SetRect(&r3,185,66,390,95);
g_button.Init(170,260,132,30,r1,r2,r3);

需要解释的还是init函数:Init(屏幕坐标x,屏幕坐标y,控件有效宽度,控件有效高度,基本图片,鼠标悬浮图片,鼠标点下图片);

这个按钮的渲染就完成了!!

为了增加这个控件的实用型,就把这个按钮的控制放在一全新的函数void DoligTuXing(bool Show){}中:

void DoligTuXing(bool Show)
{
if(Show)
{
g_button.Show();
g_cImgDolig.Show();
}
else
{
g_button.Hide();
g_cImgDolig.Hide();
}



}

这样需要增加一个新的变量

在Rander里就改变成了
DoligTuXing(m_bShow);
g_pWindowManager.Render();//GUI系统渲染函数

....

再增加一个void UpData()函数用来处理事件

void UpData()
{
if(g_button.OnButtonDown()) m_bShow = false;
}

(注*:每一个控件都有这样的事件消息来控制)

放在你的游戏事件处理循环中就可以了,例题里面没有,我就放在这个程序的事件处理循环中

while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
Render();//游戏绘制
UpData();
}

现在运行一下你的代码,点击按钮,这个对话框就消失了~~呵呵

[此贴子已经被作者于2009-4-20 16:16:26编辑过]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-2-6 06:53

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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