《嵌入式实验三.docx》由会员分享,可在线阅读,更多相关《嵌入式实验三.docx(21页珍藏版)》请在三一办公上搜索。
1、实验三 基于MINIGUI的嵌入式MiniQQ设计控件设计基础实验:基于MINIGUI的嵌入式MiniQQ主界面控件设计实验目的与意义能够基于MINIGUI设计常用控件(static控件、button控件、edit控件),了 解嵌入式MINIGUI控件编程的相关知识。实验环境redhat9.0+PC平台;目标机:友善之臂MINI2440。实验内容基于已经搭建好了的嵌入式MINIGUI开发环境,设计主窗口及其控件;主 窗口上应当有2个static控件、2个edit控件和2个button控件,并且在控件标 题栏上标示出“MiniQQ byr v1.0及开发者学号”。实验内容及步骤PC机上的Linu
2、x宿主机中已经配置好了嵌入式MINIGUI的开发环境和在PC机 上开发MINIGU I的环境。嵌入式MINIGU I的开发环境位于该路径下: /minigui/modified; PC嵌入式MiniQQ的开发源码位于该路径下: /PCminigui/modified/src,在该目录下有miniQQ.c、miniQQ.h两个源文件,同 学们可以在这两个文件上添加代码,通过编程完成自己的任务。实现miniQQ程序需要配置开发环境,具体步骤如下: PC平台新建工程目录,然后在其目录下新建子目录src。例如可以在/root/下建立 文件samples,在samples中建立src文件夹。rootlo
3、ca Ihost /# cd root|rootloca Ihost root# nckdl ir sanp les|rootloca Ihost root# cdl sanp les|rootloca Ihost sanp les# rrkdl ir src Ihost sanp les# |bi在samples中拷贝如下内容:#cp /PCminigui/modified/configure.in /root/samples#cp /PCminigui/modified/autogen.sh /root/samples#cp /PCminigui/modified/setup.sh /ro
4、ot/samples#cp /PCminigui/modified/Makefile.am /root/samples在samples目录下的sr c文件中拷贝如下内容:#cp /PCminigui/modified/src/Makefile.am /root/samples/src#cp /PCminigui/modified/src/miniQQ.c /root/samples/src修改src文件中的Makefile.am内容,使其与miniQ Q匹配。#gedit Makefile.amL TOD t(loca ItlDS t roctlocaIhos t rootlocaIhost
5、roctlocaIhcstiootloca Ihos t sanp les# autoge ii ,sh conf igure .in roctloca Ihos t sarrp les# rootloca Ihos t sanrp les# |roDtloca Ihos t sarrp ks# lroDtloca Ihost src# Is/ cp /PCiinin igu i/ired i i led/autogen /rDot/sarrp les/# cp /PQinin igu i/ired i f ied/se tup .sh /root/sanrp les/ /# cp /PQin
6、in igu i/rrod i f ied/Mkef i le .am /root/sanp les/ /# cd /root/sanTp les/kike f i le ue tup .sh srccp /PGriin igu i/ired i f ied/src/Mke f i le .am /roct/sanrp ks/src/ cp /PGriin igu i/irod i f ied/src/min iQQLc /rcot/sanrp les/src/ cd srcIMke f i le .am min iQQ-croetloca Ihost src# ged i t ke f i
7、le .am,pjat/崩mp叵sZsirZMakefilieuann 一 KgdiL文FE) 蝙辑(K; 查看也搜索佥)r.RCD 文档 帮助(E;: Q v G I S I 世 | 辱 H I IS 新建打开 保存打印旃切复制粘贴查找替换Make fileKhomsl_PRCAMS miniQQmini。SOURCES巨miniQQ.e miniQQ.h然后回到samples文件中,进行工程编译。#cd .工程编译第一步:#./autogen.sh运行 autogen.sh脚 本,从而生成 configure 脚本。roDtloa Ihos t rootloca Ihos t con f
8、igure con f igure con f igure con f igure con f igure Mike f i le .anrt Mke f i le .am Mike f i le .am Mke f i k .am Mke f i le .arrt Mike f i le .anrtsrc# cd sanrp les# /autogen sh installing /insta I l-sh installing B/nck ins ta I Id irs installing B/nniss ing7 z installing ./conf ig .guess 7z ins
9、ta 11 ing -/conf ig, sub installing ./IbETALL required file .ZbEW not found required file -/README not found installing ./aTYlNG required file ./AUTHORS not found required file ,/QiangeLog not foundsrc/ke f i le .anrt installing ./de p coop roctloca Ihcs t anrp les# I工程编译第二步:#./setup.sh运行setup.sh脚本,
10、从而生成Makefile文件。工程编译第三步:#make进入到src文件中可以看到编译成功的绿色的miniQ Q的可执行程序。在srcm目录下键入“qvfb &”运行qvfb,然后在File中选择Configure,选择640*480。V root loLaihi): 7sample/si-文件()编辑也;查看(堇nclude -Mill -W; tr ict-pr ca I/ I ib -c tes t -f nri miniQQ.c:60: warning: in min iQQ- c:61; warn ing: in min i(JQ.c;59: warning: s miniQQc:6
11、0: warning: s min iQQ.c:61: earning: s miniQQ.c:171: warning:、 min iQQ-c:262: warning: gcc -1/usr/loca1/inc lud /include -L/usrZlocal/ZSizeO 240x320 PDA,O 320x240 W 640x480 VGA,DepthO 1 bit moiiochromeO 4 bit grayscaleO B bitO 12 (16) bitO 16 bitgu i - Inex t - I png - Im - I rrake1: Leaving directo
12、 rrake1: Enter ing direct rrake1: bothing to be d rrake 1 : Leaving directo rootlocaIhos t rootlocaIhos t 总用爵:84 drwr drwr drw 1 ack frame:H gray frame:H white frawe:图、其他静态框类型3.2按钮定义(button控件)按钮是除静态框之外使用最为频繁的一种控件。按钮通常用来为用户提供开 关选择。在本实验的MiniQQ主窗口中需要设计两个按钮,一个是“登录”按钮, 另一个是“退出”按钮。MiniGUI的按钮可划分为普通按钮、复选框和单
13、选钮等几种类型。用户可以 通过键盘或者鼠标来选择或者切换按钮的状态。用户的输入将使按钮产生通知消 息,应用程序也可以向按钮发送消息以改变按钮的状态。以CTRL_BUTTON为控件类名调用CreateWindow函数,即可创建按钮控件。按钮的类型和风格20.1.1普通按钮普通按钮是一个矩形,其中显示了通过CreateWindow传递的窗口标题。该 矩形占用了在CreateWindow调用中给出的全部高度和宽度,而文字位于矩形的中心。按钮控件主要用来触发一个立即回应的动作,并且不会长久保持开关信息。 这种形态的按钮控件有两种窗口风格,分别叫做BS_PUSHBUTTON和BS_DEFPUSHBUTT
14、ON。BS_DEFPUSHBUTTON中的“ DEF”代表“默认”。当用来设计对话框时, BS_PUSHBUTTON风格和BS_DEFPUSHBUTTON 风格的作用不同,具有 BS_DEFPUSHBUTTON的按钮将是默认接收ENTER键输入的按钮,而不管当前的输 入焦点处于哪个控件上。但是当用作普通主窗口的控件时,两种型态的按钮作用 相同,只是具有BS_DEFPUSHBUTTON风格的按钮的边框要粗一些。当鼠标光标处在按钮中时,按下鼠标左键将使按钮用三维阴影重画自己,就 好像真的被按下一样。放开鼠标按键时,就恢复按钮的原貌,并向父窗口发送一 个MSG_COMMAND消息和BN_CLICKE
15、D通知码,当按钮拥有输入焦点时,在文字的周 围就有虚线,按下及释放空格键与按下及释放鼠标按键具有相同的效果。通常情况下,按钮文本会以单行的形式在垂直和水平方向居中显示,不会自 动换行。不过,应用程序也可以通过指定BS_MULTLINE风格来指定显示多行文 本。下面的程序段创建了两个普通按钮:CreateWindow (CTRL_BUTTON,Push Button,WS_CHILD | BS_PUSHBUTTON | BS_CHECKED | WS_VISIBLE,IDC_BUTTON,10, 10, 80, 30, hWnd, 0);CreateWindow (CTRL_BUTTON,Mul
16、tiple Lines Push Button,WS_CHILD | BS_PUSHBUTTON | BS_MULTLINE | WS_VISIBLE,IDC_BUTTON + 1,100, 10, 80, 40, hWnd, 0);上述代码段建立的普通按钮的显示效果如下图所示。注意在使用 BS_MULTILINE风格之后,文本将垂直向上对齐。图、普通按钮按钮消息应用程序通过给按钮发送消息来实现如下目的:MSG_COMMAND按钮通知码具有BS_NOTIFY风格的按钮可产生的通知码主要有:BN_CLICKED:表明用户单击此按钮。该通知码的值为0,因此,如果要在按 钮的父窗口中处理该按钮发送过
17、来的BN_CLICKED通知消息, 只需判断MSG_COMMAND消息的wParam参数是否等于按钮的标识符即可。该通知的产生是 默认的,将忽略按钮控件的BS_NOTIFY风格。BN_PUSHED :表明用户将此按钮按下。BN_UNPUSHED:表明用户将此按钮释放。BN_DBLCLK :表明用户在此按钮上进行了鼠标左键的双击操作。BN_SETFOCUS:表明按钮获得了输入焦点。BN_KILLFOCUS:表明按钮失去了输入焦点。3.3编辑框定义(edit控件)在本实验的MiniQQ主窗口中需要设计两个编辑框,一个是输入用户名的编辑 框,另一个是输入密码的编辑框。编辑框为应用程序提供了接收用户输
18、入和编辑文字的重要途径。相对前面提 到的静态框、按钮和列表框等控件来讲,编辑框的用途和行为方式比较单一。它 在得到输入焦点时显示一个闪动的插入符,以表明当前的编辑位置;用户键入的 字符将插入到插入符所在位置。除此之外,编辑框还提供了诸如删除、移动插入位置和选择文本等编辑功能。MiniGUI中提供了三种类型的编辑框,分别对应于三种控件类,它们是: 简单编辑框:类名EDIT,标识符CTRL_EDIT。它只能处理等宽字符以及 GB2312字符集,只能处理单行文本,没有选中和复制等功能。一般情况下不建议 使用该控件。单行编辑框:类名SLEDIT,标识符CTRL_SLEDIT。它只能处理单行文本, 但在
19、MiniGUI逻辑字体的帮助下,可以处理任意的多字节字符输入,包括变长字 符集。该控件提供了选中、复制和粘贴等编辑功能。多行编辑框:类名TEXTEDIT, 标识符为CTRL_MLEDIT,CTRL_MEDIT或者CTRL_TEXTEDIT。它用来处理多行文本, 亦可处理任意的多字节字符输入,包括变长字符集。该控件提供了选中、复制和 粘贴等编辑功能。除上述控件类差别之外,上述三种编辑框控件类的风格、消息以及通知码大 体相似,只有少量不同。图22.1给出了三种编辑框的运行效果。图、MiniGUI编辑框编辑框风格通常,我们在创建编辑框时使用下面的风格组合:WS_CHILD | WS_VISIBLE
20、| WS_BORDER显然,上述风格定义中没有使用任何编辑框特有的风格。也就是说,我们无 需指定编辑框特有的风格就能正常使用编辑框。但编辑框也有一些自己的特有风格,主要包 括:ES_UPPERCASE :可以使编辑框只显示大写字母。ES_LOWERCASE:可以使编辑框只显示小写字母。ES_PASSWORD :编辑框用来输入密码,但用星号(*)显示输入的字符。ES_READONLY:建立只读编辑框,用户不能修改编辑框中的内容,但插入符 仍然可见。ES_BASELINE:在编辑框文本下显示虚线。ES_AUTOWRAP :用于多行编辑框,当文本超过控件边界时,将自动换行。ES_LEFT:指定编辑框的对齐风格,当前版本的MiniGUI只实现了文本 的左对齐风格。ES_NOHIDESEL :编辑框在失去焦点时保持被选择文本的选中状态。ES_AUTOSELECT :编辑框在得到焦点时自动选中所有的文本内容。ES_TITLE:在编辑框的第一行显示指定的标题,只适用于多行编辑框控件。ES_TIP :当编辑框的内容为空时,在其中显示相关的提示信息;只适用于SLEDIT 控件。4、主窗口实现通过设计主窗口风格参数等信息,并在主窗口中添加2个staitic控件,两个 按钮控件和2个edit控件。