特别说明:完整STemWin的1-60期教程和配套实例下载地址:链接- V- r6 O" B3 d+ p
第49章 MESSAGEBOX-消息框控件 : r2 K( D* R7 Z9 B8 v' @
本期教程讲解STemWin支持的消息框控件。 49. 1 消息框控件介绍 49. 2 官方DIALOG_MessageBox实例 49. 3官方DIALOG_MessageBoxUser实例 49. 4 总结 49.1 消息框控件介绍 使用MESSAGEBOX控件可在带有标题栏和 “确定”按钮 (必须按下才能关闭窗口)的框架窗口中显示消息。创建消息框或者创建并执行消息框仅需一行代码。下表显示MESSAGEBOX小工具的外观: 消息控件的使用比较简单,仅有两个相关的API:GUI_MessageBox()和MESSAGEBOX_Create()。 49.2 官方DIALOG_MessageBox实例 官方的这个实例很好的演示了MessageBox的使用,这个例子在模拟器中的位置: 源码如下(程序中进行了详细的注释): - ----------------------------------------------------------------------
- h/ f% X' f W" W' { - File : DIALOG_MessageBox.c- A2 h- i; ]" [/ d7 ?" X3 I
- Purpose : Example demonstrating GUI_MessageBox0 f4 B8 m6 Q. W. R- M" D
- Requirements: WindowManager - (x). A+ U& w0 r M: n3 H. t" n; u
- MemoryDevices - (x)
' W$ a& r6 p) a+ Y* u7 g8 _ - AntiAliasing - ( )! i, L9 J. k; u, \7 k
- VNC-Server - ( )7 e; e' b+ i: t5 Q7 O7 N/ u$ r. q
- PNG-Library - ( )$ r3 Y& k) W8 W* ^: x; m2 Y: T7 \
- TrueTypeFonts - ( )! a; t" \4 v; }% p) B0 t
- ----------------------------------------------------------------------
# M3 {" f8 f0 T3 ?2 l3 a - */
! r Y! |5 S% L% n% f - ( x* k# z/ [! h7 _
- #include "GUI.h"
1 E8 h* J' K* I u/ M- D/ e' W - #include "WM.h"7 K, C" M0 h6 \5 V; j; j
-
9 {% S' {5 {( {4 @9 z - /*******************************************************************' D4 I: [* \; O/ ]
- *, N# t/ k! ~1 N& P% _" |
- * Static code7 o3 G, U6 b8 f4 {1 {
- */ _/ A/ M( J+ U( | D; R. {
- ********************************************************************1 m0 C4 ~% J D2 j. _7 n8 J r
- */
) G! b9 [2 l$ w - /********************************************************************* E5 A/ u9 B) b) \; l# i' b
- ** b. I. Q- v# C+ T z5 A' G% _, r
- * _cbBkWindow
r2 l0 l& D6 N3 I - * 桌面窗口的回调函数
( h6 q6 g8 X) v/ j0 _% i3 Z - */
1 ]4 A0 ]6 f+ X/ C& a. I. m' \* k# d - static void _cbBkWindow(WM_MESSAGE* pMsg) {# T/ a9 t" {7 u& Q
- switch (pMsg->MsgId) {7 [- o+ c, `$ T! P% N* l& e
- case WM_PAINT:
% ]7 U/ F Y" q* S - GUI_SetBkColor(GUI_RED);4 B" M9 V7 K) ?) X/ Q; g$ l
- GUI_Clear();" P: s$ R. F. [
- GUI_SetColor(GUI_WHITE);% t' Z" b% f* ^2 ?9 z+ K: z, M
- GUI_SetFont(&GUI_Font24_ASCII);9 ~* v; q3 ?& x; n& v g
- GUI_DispStringHCenterAt("DIALOG_MessageBox - Sample", 160, 5);
1 t* W2 J" D0 b- ^+ J/ m - break;8 F. l8 m" S$ x9 _+ N1 F
- default:0 ^- H" [) ]5 ^, L- h2 r. p; R
- WM_DefaultProc(pMsg);
; ~$ \" g/ } U. S# d2 o6 u - }
5 x; T4 E2 \. G8 Q, s! \6 ] - }1 C6 p+ c9 p, C9 N4 x0 ^
-
; L* J- s. b1 m' J- d- H3 L0 }& j - /*********************************************************************
* S' J8 {: g' f2 x( f) o - *
! J3 w- ^! J2 h' a) q - * Public code& j1 m A/ Y! Y- M1 t& B
- *
7 C1 x8 U& {* c% }, B; x - **********************************************************************
2 t, c0 N! Q$ N( L' e - *// Y3 G) j% C8 m8 ]( }! t
- /*********************************************************************
/ q& {; g6 M7 {3 |/ {' l - *# Y% c/ p9 O' n" g; n6 t) u
- * MainTask0 G& O, o% z& N3 p) i$ \
- */
" c! f! x2 C, B4 B - void MainTask(void) {
1 p5 Q! ~+ B3 X# Z' e8 ?8 i6 D - GUI_Init();6 l4 f" h7 u. Z. W/ j) }
- % e4 U H1 ~/ m
- /* 开启窗口使用内存设备 */
# |# J8 i0 F0 x/ o4 Q V @8 {4 f - #if GUI_SUPPORT_MEMDEV4 b2 m$ y r/ ^; _% \
- WM_SetCreateFlags(WM_CF_MEMDEV);
- ^( q3 ^' ?6 a2 K& _# }. w; d0 S - #endif
" @7 U3 t2 x/ _" {: E$ U+ e - /* 设置桌面窗口的回调函数 */$ a% ^/ y: L- x8 N. I7 q
- WM_SetCallback(WM_HBKWIN, &_cbBkWindow);
: G& l# J, `5 S! _ -
1 y3 W& X5 }- v: s0 J - //1 L0 m4 _8 y& r4 T8 K+ Z8 q3 D6 b
- // 创建消息框,等待直到他被关闭. X# h9 P$ G+ V! l& r
- //
. I3 G3 A3 h4 Y/ n- M: ~ - while (1) {
* g$ D5 L. I# K. d; K - GUI_MessageBox("This text is shown\nin a message box",9 K/ W Y) h" o9 g* v- G9 i- M
- "Caption/Title", GUI_MESSAGEBOX_CF_MOVEABLE);5 G# O2 q4 g- _
- GUI_Delay(750); // 延迟一段时间
: e% G5 P5 J8 r: a+ e# |% D - GUI_MessageBox("New message !",
6 J% A3 _) ]7 m. g' b - "Caption/Title", GUI_MESSAGEBOX_CF_MOVEABLE);( N" k' S1 ?7 h1 H% |9 {
- GUI_Delay(750);7 x2 D' s7 r% ~! L8 G
- }
! ]7 g% a7 | Z4 j - }
复制代码实际显示效果如下: |