MiniGUI - 静态框

CTRL_STATIC
 
文本
通过 SS_SIMPLE 风格创建的控件只用来显示单行文本,也就是说,控件文本不会自动换行显示,并且文本永远是左对齐的。
通过 SS_LEFT、SS_CENTER 或 SS_RIGHT 风格创建的静态框可用来显示多行文本,并分别以左对齐、中对齐和右对齐方式显 示文本。 
通过 SS_LEFTNOWORDWRAP 风格创建的静态框会扩展文本中的 TAB 符,但不做自动换行处理。
 
位图/图标
通过 SS_BITMAP 或者 SS_ICON,这种静态框会显示一幅位图或者图标,需要在创建静态框时通过dwAddData 参数设定要显示的位图对象指针或者图标对象句柄。
和这两类静态框相关联的风格有 SS_CENTERIMAGE 和SS_REALSIZEIMAGE。默认情况下,位图和图标要经过适当的缩放充满整个静态框,但使用 SS_REALSIZEIMAGE 风格将取消缩放操作,并显示在静态框的左上方,如果在使用 SS_REALSIZEIMAGE 的同时使用 SS_CENTERIMAGE 风格,则会在控件中部显示位图或图标。
 
分组框
通过SS_GROUPBOX 设定静态框为分组框。分组框内可以创建的控件有:静态框、按钮、简单编辑框、单行编辑框、多行编辑框、列 表框、滑块和菜单按钮。
 
填充与边框
SS_WHITERECT:以白色填充静态框矩形。
SS_GRAYRECT:以灰色填充静态框矩形。
SS_BLACKRECT:以黑色填充静态框矩形。
SS_GRAYFRAME:灰色边框。
SS_WHITEFRAME:白色边框。  
SS_BLACKFRAME:黑色边框。
 
消息
STM_GETIMAGE:该消息返回位图的指针或者图标句柄。
STM_SETIMAGE:通过 wParam 参数重新设置位图指针或者图标句柄,并且返回原来的指针。
 
通知
当静态框风格中包含 SS_NOTIFY 时,静态框会产生如下两个通知消息:
STN_DBLCLK:表示用户在静态框内双击了鼠标左键。
STN_CLICKED:表示用户在静态框内单击了鼠标左键。
 
mg-samples的静态框示例
 1 #include <stdio.h>
 2 
 3 #include <minigui/common.h>
 4 #include <minigui/minigui.h>
 5 #include <minigui/gdi.h>
 6 #include <minigui/window.h>
 7 #include <minigui/control.h>
 8 
 9 #define CAPTION "Static Control Demo"
10 #define PROMPTA "Please double click here"
11 #define PROMPTB "You just double click here:)"
12 #define PROMPTC "You just click here:)"
13 
14 static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data)
15 {
16     if (nc == STN_DBLCLK)
17         SetWindowText (hwnd, PROMPTB);
18     else if(nc == STN_CLICKED)
19     SetWindowText (hwnd, PROMPTC);
20 }
21 
22 static int StaticDemoWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
23 {
24     HWND hwnd;
25 
26     switch (message) {
27         case MSG_CREATE:
28             hwnd = CreateWindow (CTRL_STATIC, PROMPTA, 
29                           WS_VISIBLE | SS_CENTER | SS_NOTIFY, 
30               50, 55, 95, 200, 20, hWnd, 0);
31             SetNotificationCallback (hwnd, my_notif_proc);
32             return 0;
33 
34         case MSG_DESTROY:
35             DestroyAllControls (hWnd);
36             return 0;
37 
38         case MSG_CLOSE:
39             DestroyMainWindow (hWnd);
40             PostQuitMessage (hWnd);
41             return 0;
42     }
43 
44     return DefaultMainWinProc(hWnd, message, wParam, lParam);
45 }
46 
47 int MiniGUIMain (int argc, const char* argv[])
48 {
49     MSG Msg;
50     HWND hMainWnd;
51     MAINWINCREATE CreateInfo;
52 
53 #ifdef _MGRM_PROCESSES
54     JoinLayer(NAME_DEF_LAYER , "static" , 0 , 0);
55 #endif
56 
57     CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;
58     CreateInfo.dwExStyle = WS_EX_NONE;
59     CreateInfo.spCaption = CAPTION;
60     CreateInfo.hMenu = 0;
61     CreateInfo.hCursor = GetSystemCursor(0);
62     CreateInfo.hIcon = 0;
63     CreateInfo.MainWindowProc = StaticDemoWinProc;
64     CreateInfo.lx = 0;
65     CreateInfo.ty = 0;
66     CreateInfo.rx = 320;
67     CreateInfo.by = 240;
68     CreateInfo.iBkColor = COLOR_lightwhite;
69     CreateInfo.dwAddData = 0;
70     CreateInfo.hHosting = HWND_DESKTOP;
71     
72     hMainWnd = CreateMainWindow (&CreateInfo);
73     
74     if (hMainWnd == HWND_INVALID)
75         return -1;
76 
77     ShowWindow(hMainWnd, SW_SHOWNORMAL);
78 
79     while (GetMessage(&Msg, hMainWnd)) {
80         TranslateMessage(&Msg);
81         DispatchMessage(&Msg);
82     }
83 
84     MainWindowThreadCleanup (hMainWnd);
85 
86     return 0;
87 }
88 
89 #ifdef _MGRM_THREADS
90 #include <minigui/dti.c>
91 #endif

 

posted @ 2014-03-20 14:00  paullam  阅读(1821)  评论(0编辑  收藏  举报