Files
minigui-docs/programming-guide-zh/MiniGUIProgGuidePart2Chapter05-zh.md
2022-11-17 15:46:18 +00:00

44 KiB
Raw Permalink Blame History

静态框系列控件类

1 静态框系列简介

静态框是用来在窗口的特定位置显示数字、文字和图片等信息,比如公司简介、公司产品商标等等,是最常见的控件之一。一般来说,静态框系列的控件行是不需要对用户的输入进行动态的响应,也就是说不需要接收任何输入(如键盘鼠标等),也就没有自己的事件。

控件中文名称 控件名称mStudio 显示名) 用途 NCS 类名 控件窗口类 ID
静态框 Label 显示单行或多行文本 mStatic NCSCTRL_STATIC
图片框 Image 显示图片 mImage NCSCTRL_IMAGE
矩形框 Rectangle 绘制矩形 mRect NCSCTRL_RECTANGLE
分组框 Group Box 可包含其他控件的区域控件 mGroupbox NCSCTRL_GROUPBOX
按钮组 Button Group 管理 RadioButton,实现单选功能 mButtonGroup NCSCTRL_BUTTONGROUP
发光二极管标签 LEDLabel 显示类 LED 字符 mLEDLabel NCSCTRL_LEDLABEL
分隔栏 Horz/Vert Separator 分隔线,视觉上实现区域划分 mSeparator NCSCTRL_SEPARATOR

静态框系列控件的继承关系如下:

  • mStatic
    • mImage
    • mRect
    • mGroupbox
      • mButtonGroup
    • mLEDLabel
    • mSeparator

每种类型的静态框均继承父类的属性、事件、方法,因此在下面的介绍中将自动忽略继承的部分。

2 mStatic

static_show

  • 功能:mStatic 是用来绘制包含文本,图片等内容的静态区域控件。
  • 父类:mWidget
  • 直接子类:
    • mImage
    • mRect
    • mGroupbox
    • mLEDLabel
    • mSeparator

2.1 mStatic 风格

2.2 mStatic属性

属性名 类型 权限 属性说明 模式取值
NCSP_STATIC_ALIGN int RW 控件内容水平对齐模式 NCS_ALIGN_LEFT, NCS_ALIGN_RIGHT, NCS_ALIGN_CENTER
NCSP_STATIC_VALIGN int RW 控件内容垂直对齐模式 NCS_VALIGN_TOP, NCS_VALIGN_BOTTOM, NCS_VALIGN_CENTER
NCSP_STATIC_AUTOWRAP int RW 控件内容自动换行 1, 0
  • NCSP_STATIC_ALIGN:设置控件内容为水平对齐模式,共有 3 种取值
    • NCS_ALIGN_LEFT:左对齐,水平对齐模式的默认取值 - 0
    • NCS_ALIGN_RIGHT:右对齐 - 1
    • NCS_ALIGN_CENTER:居中对齐 - 2
  • NCSP_STATIC_VALIGN:设置控件内容为垂直对齐模式,共有 3 种取值
    • NCS_VALIGN_TOP:顶端对齐 - 0
    • NCS_VALIGN_BOTTOM:底端对齐,垂直对齐模式的默认取值 - 1
    • NCS_VALIGN_CENTER:居中对齐 - 2
  • NCSP_STATIC_AUTOWRAP设置静态框内容是否为自动换行模式0 为单行模式即关闭自动换行模式1 为自动换行模式

开发者可以通过以下方法设置 mStatic 的属性

//static控件属性配置
static NCS_PROP_ENTRY static1_props [] = {
    { NCSP_STATIC_ALIGN, NCS_ALIGN_CENTER },    //对齐方式
    {0, 0}
};
    ...
static NCS_PROP_ENTRY static4_props [] = {
    { NCSP_STATIC_VALIGN, NCS_VALIGN_TOP },
    {0, 0}
};
    ...
static NCS_WND_TEMPLATE _ctrl_templ[] = {
    {
        NCSCTRL_STATIC,                      //控件名称
        IDC_STATIC1+0,
        10, 10, 160, 30,                      //控件位置, 大小
        WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "Default Text",                  //控件内文本内容
        NULL, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    {
        NCSCTRL_STATIC, 
        IDC_STATIC1+1,
        10, 50, 160, 30,
        WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "Center Text",
        static1_props, //props, 设置属性
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    ...

2.3 mStatic 事件

目前静态框系列控件不响应任何事件。

2.4 mStatic 方法

2.5 mStatic 渲染器

2.6 mStatic 实例

本实例为用户演示了如何创建不同模式的静态框。

static

清单 1 static.c

/*
* ** $Id$
* **
* ** Listing P2C4.1
* **
* ** static.c: Sample program for mGNCS Programming Guide
* **      A mGNCS application for mStatic.
* **
* ** Copyright (C) 2009 Feynman Software.
* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <mgncs/mgncs.h>

#define IDC_STATIC1 100
#define IDC_SATAICN 107

static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
        //TODO : initialize
        return TRUE;
}

static void mymain_onClose(mWidget* self, int message)
{
        DestroyMainWindow(self->hwnd);
        PostQuitMessage(0);
}


//Propties for
static NCS_PROP_ENTRY static1_props [] = {
        { NCSP_STATIC_ALIGN, NCS_ALIGN_CENTER },
        {0, 0}
};
static NCS_PROP_ENTRY static2_props [] = {
        { NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT },
        {0, 0}
};
static NCS_PROP_ENTRY static4_props [] = {
        { NCSP_STATIC_VALIGN, NCS_VALIGN_TOP },
        {0, 0}
};

static NCS_PROP_ENTRY static5_props [] = {
        { NCSP_STATIC_VALIGN, NCS_VALIGN_BOTTOM },
        {0, 0}
};

static NCS_PROP_ENTRY static6_props [] = {
        { NCSP_STATIC_AUTOWRAP, 0 },
        {0, 0}
};


//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+0,
                10, 10, 160, 30,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "Default Text",
                NULL, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+1,
                10, 50, 160, 30,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "Center Text",
                static1_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+2,
                10, 90, 160, 30,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "Right Text",
                static2_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+3,
                220, 10, 80, 120,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "Defalut VCenter ",
                NULL, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+4,
                315, 10, 70, 120,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "Top Text",
                static4_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+5,
                400, 10, 70, 120,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "Bottom Text",
                static5_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC , 
                IDC_STATIC1+6,
                10, 160, 220, 30,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "This static control shows the Single Line Text",
                static6_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        
};


static NCS_EVENT_HANDLER mymain_handlers[] = {
        {MSG_CREATE, mymain_onCreate},
        {MSG_CLOSE, mymain_onClose},
        {0, NULL}
};

//define the main window template
static NCS_MNWND_TEMPLATE mymain_templ = {
        NCSCTRL_DIALOGBOX, 
        1,
        0, 0, 480, 270,
        WS_CAPTION | WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "static Test ....",
        NULL,
        NULL,
        mymain_handlers,
        _ctrl_templ,
        sizeof(_ctrl_templ)/sizeof(NCS_WND_TEMPLATE),
        0,
        0, 0,
};

int MiniGUIMain(int argc, const char* argv[])
{
        ncsInitialize();
        mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect 
        (&mymain_templ, HWND_DESKTOP);
        
        _c(mydlg)->doModal(mydlg, TRUE);
        
        
        MainWindowThreadCleanup(mydlg->hwnd);
        
        ncsUninitialize ();
        return 0;
}

#ifdef _MGRM_THREADS
#include <minigui/dti.c>
#endif

3 mImage

show

  • 功能: 在一区域内加载显示图片控件
  • 继承自: mStatic
  • 直接子类: 无

3.1 mImage 属性

属性名 类型 权限 属性说明 取值
NCSP_IMAGE_IMAGE PBITMAP RW image 控件内容图片 id对应 mimage 中的 pbmp 图片文件指针
NCSP_IMAGE_IMAGEFILE char* RW image 控件内容图片名字 id对应 pbmp 图片的名字指针
NCSP_IMAGE_DRAWMODE enum RW image 控件绘制模式 id对应 mImageDrawMode NCS_DM_NORMAL, NCS_DM_SCALED, NCS_DM_TILED
NCSP_STATIC_ALIGN int RW 设置 image 控件内容水平对齐模式 NCS_ALIGN_LEFT, NCS_ALIGN_RIGHT, NCS_ALIGN_CENTER
NCSP_STATIC_VALIGN int RW 设置 image 控件内容垂直对齐模式 NCS_VALIGN_TOP, NCS_VALIGN_BOTTOM, NCS_VALIGN_CENTER
  • NCSP_IMAGE_DRAWMODE:设置图片绘制模式,共有三种方式。
    • NCS_DM_NORMAL:按原始情况显示图片,绘制模式的默认取值 - 0
    • NCS_DM_SCALED 拉伸,将图片拉伸成和以覆盖整个静态框 - 1
    • NCS_DM_TILED:平铺,将图片重复显示在整个静态框中 - 2
  • NCSP_STATIC_ALIGN:参见 mStatic
  • NCSP_STATIC_VALIGN:参见 mStatic

以下代码演示了如何设置绘制模式等属性

static BITMAP icon;
static BITMAP bitmap;

static void set_icon_info(mWidget* self, int id, PBITMAP pbmp, int align_id, int align)
{
    mImage *img;
    img = (mImage *)ncsGetChildObj(self->hwnd, id);

    if(img){
        _c(img)->setProperty(img, NCSP_IMAGE_IMAGE, (DWORD)pbmp);
        _c(img)->setProperty(img, align_id, align);
    }
}


static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
    //TODO : initialize
    mImage *img;
    LoadBitmapFromFile(HDC_SCREEN, &bitmap, "image_test.jpg");

    LoadBitmapFromFile(HDC_SCREEN, &icon, "icon.png");

    set_icon_info(self, IDC_IMAGE1, &icon, NCSP_STATIC_ALIGN, NCS_ALIGN_LEFT);
    set_icon_info(self, IDC_IMAGE2, &icon, NCSP_STATIC_ALIGN, NCS_ALIGN_CENTER);
    set_icon_info(self, IDC_IMAGE3, &icon, NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT);
    set_icon_info(self, IDC_IMAGE4, &icon, NCSP_STATIC_VALIGN, NCS_VALIGN_TOP);
    set_icon_info(self, IDC_IMAGE5, &icon, NCSP_STATIC_VALIGN, NCS_VALIGN_CENTER);
    set_icon_info(self, IDC_IMAGE6, &icon, NCSP_STATIC_VALIGN, NCS_VALIGN_BOTTOM);

    img = (mImage *)ncsGetChildObj(self->hwnd, IDC_IMAGE7);
    if(img){
        _c(img)->setProperty(img, NCSP_IMAGE_IMAGE, (DWORD)&bitmap);
        _c(img)->setProperty(img, NCSP_IMAGE_DRAWMODE, NCS_DM_SCALED);
    }

    img = (mImage *)ncsGetChildObj(self->hwnd, IDC_IMAGE8);
    if(img){
        _c(img)->setProperty(img, NCSP_IMAGE_IMAGE, (DWORD)&bitmap);
        _c(img)->setProperty(img, NCSP_IMAGE_DRAWMODE, NCS_DM_TILED);
    }

    return TRUE;
}

3.2 mImage 事件

3.3 mImage 方法

3.4 mImage 实例

本实例为用户演示了如何显示并创建不同绘制模式的图片静态框

image

清单 2 image.c

/*
* ** $Id$
* **
* ** Listing P2C4.2
* **
* ** image.c: Sample program for mGNCS Programming Guide
* **      A mGNCS application for mImage.
* **
* ** Copyright (C) 2009 Feynman Software.
* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <mgncs/mgncs.h>

#define IDC_IMAGE1 100
#define IDC_IMAGE2 101
#define IDC_IMAGE3 102
#define IDC_IMAGE4 103
#define IDC_IMAGE5 104
#define IDC_IMAGE6 105
#define IDC_IMAGE7 106
#define IDC_IMAGE8 107

static BITMAP icon;
static BITMAP bitmap;

static void set_icon_info(mWidget* self, int id, PBITMAP pbmp, int align_id, int align)
{
        mImage *img;
        img = (mImage *)ncsGetChildObj(self->hwnd, id);
        
        if(img){
                _c(img)->setProperty(img, NCSP_IMAGE_IMAGE, (DWORD)pbmp);
                _c(img)->setProperty(img, align_id, align);
        }
}


static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
        //TODO : initialize
        mImage *img;
        LoadBitmapFromFile(HDC_SCREEN, &bitmap, "image_test.jpg");
        
        LoadBitmapFromFile(HDC_SCREEN, &icon, "icon.png");
        
        set_icon_info(self, IDC_IMAGE1, &icon, NCSP_STATIC_ALIGN, NCS_ALIGN_LEFT);
        set_icon_info(self, IDC_IMAGE2, &icon, NCSP_STATIC_ALIGN, NCS_ALIGN_CENTER);
        set_icon_info(self, IDC_IMAGE3, &icon, NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT);
        set_icon_info(self, IDC_IMAGE4, &icon, NCSP_STATIC_VALIGN, NCS_VALIGN_TOP);
        set_icon_info(self, IDC_IMAGE5, &icon, NCSP_STATIC_VALIGN, NCS_VALIGN_CENTER);
        set_icon_info(self, IDC_IMAGE6, &icon, NCSP_STATIC_VALIGN, NCS_VALIGN_BOTTOM);
        
        img = (mImage *)ncsGetChildObj(self->hwnd, IDC_IMAGE7);
        if(img){
                _c(img)->setProperty(img, NCSP_IMAGE_IMAGE, (DWORD)&bitmap);
                _c(img)->setProperty(img, NCSP_IMAGE_DRAWMODE, NCS_DM_SCALED);
        }
        
        img = (mImage *)ncsGetChildObj(self->hwnd, IDC_IMAGE8);
        if(img){
                _c(img)->setProperty(img, NCSP_IMAGE_IMAGE, (DWORD)&bitmap);
                _c(img)->setProperty(img, NCSP_IMAGE_DRAWMODE, NCS_DM_TILED);
        }
        
        return TRUE;
}

static void mymain_onClose(mWidget* self, int message)
{
        DestroyMainWindow(self->hwnd);
        PostQuitMessage(0);
        UnloadBitmap(&bitmap);
}


//Propties for

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        {
                NCSCTRL_STATIC, 
                0,
                10, 10, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "image - left",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE1,
                10, 30, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                130, 10, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "image - center",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE2,
                130, 30, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                250, 10, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "image - right",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE3,
                250, 30, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                10, 140, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "image - top",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE4,
                10, 160, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                130, 140, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "image - middle",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE5,
                130, 160, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                250, 140, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "image - bottom",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE6,
                250, 160, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                10, 270, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "bitmap - scaled",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE7,
                10, 290, 280, 150,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                300, 270, 100, 20,
                WS_VISIBLE,
                WS_EX_NONE,
                "bitmap - tiled",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_IMAGE, 
                IDC_IMAGE8,
                300, 290, 280, 150,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "",
                NULL,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        
};


static NCS_EVENT_HANDLER mymain_handlers[] = {
        {MSG_CREATE, mymain_onCreate },
        {MSG_CLOSE, mymain_onClose },
        {0, NULL }
};

//define the main window template
static NCS_MNWND_TEMPLATE mymain_templ = {
        NCSCTRL_DIALOGBOX, 
        1,
        0, 0, 600, 480,
        WS_CAPTION | WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "image Test ....",
        NULL,
        NULL,
        mymain_handlers,
        _ctrl_templ,
        sizeof(_ctrl_templ)/sizeof(NCS_WND_TEMPLATE),
        0,
        0, 0,
};

int MiniGUIMain(int argc, const char* argv[])
{
        ncsInitialize();
        mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect 
        (&mymain_templ, HWND_DESKTOP);
        
        _c(mydlg)->doModal(mydlg, TRUE);
        
        
        MainWindowThreadCleanup(mydlg->hwnd);
        
        ncsUninitialize ();
        return 0;
}

#ifdef _MGRM_THREADS
#include <minigui/dti.c>
#endif

4 mRect

rect_show

  • 功能: 本控件为用户提供了绘制矩形的功能,可以通过设置属性的方法,方便快捷的绘制出具有填充色、圆角、边框等各种特色的矩形
  • 继承自: mStatic
  • 直接子类: 无

4.1 mRect 属性

属性名 类型 权限 说明
NCSP_RECT_BORDERSIZE int RW rect 控件边框的粗细度,对应矩形控件的边框粗细,类型为 int
NCSP_RECT_BORDERCOLOR dword RW rect 控件边框的颜色, 对应矩形控件的边框颜色,类型为 dword
NCSP_RECT_FILLCOLOR dword RW rect 控件填充色,对应矩形控件的填充色,类型为 dword
NCSP_RECT_XRADIUS int RW rect 控件圆角横向x半径对应矩形控件的圆角半径类型为 int
NCSP_RECT_YRADIUS int RW rect 控件圆角竖向y半径对应矩形控件的圆角半径类型为 int
NCSP_RECT_FILLCLR_RED
NCSP_RECT_FILLCLR_GREEN
NCSP_RECT_FILLCLR_BLUE
NCSP_RECT_FILLCLR_ALPHA
NCSP_RECT_BRDCLR_RED
NCSP_RECT_BRDCLR_GREEN
NCSP_RECT_BRDCLR_BLUE
NCSP_RECT_BRDCLR_ALPHA

以下代码演示了如何设置矩形的属性

//Propties for
static NCS_PROP_ENTRY rect1_props [] = {
    {NCSP_RECTANGLE_BORDERSIZE, 3},
    {NCSP_RECTANGLE_BORDERCOLOR, 0xFFFF0000},
    {NCSP_RECTANGLE_FILLCOLOR, 0x00000000},
    {0, 0}
};

static NCS_PROP_ENTRY rect2_props [] = {
    {NCSP_RECTANGLE_BORDERSIZE, 2},
    {NCSP_RECTANGLE_BORDERCOLOR, 0xFFFFFFF},
    {NCSP_RECTANGLE_FILLCOLOR, 0xFF0F0F0F},
    {0, 0}
};

static NCS_PROP_ENTRY rect3_props [] = {
    {NCSP_RECTANGLE_BORDERSIZE, 0},
    {NCSP_RECTANGLE_BORDERCOLOR, 0xFF0C0000},
    {NCSP_RECTANGLE_FILLCOLOR, 0xFF00FFFF},
    {0, 0}
};

static NCS_PROP_ENTRY rect4_props [] = {
    {NCSP_RECTANGLE_BORDERSIZE, 5},
    {NCSP_RECTANGLE_BORDERCOLOR, 0xFF0000FF},
    {NCSP_RECTANGLE_FILLCOLOR, 0xFF00FF00},
    {NCSP_RECTANGLE_XRADIUS, 4},
    {NCSP_RECTANGLE_YRADIUS, 4},
    {0, 0}
};
//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
    ...
    {
        NCSCTRL_RECTANGLE,
        ID_RECT1,
        110, 10, 80, 40,
        WS_VISIBLE,
        WS_EX_NONE,
        "",
        rect1_props, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    ...
    {
        NCSCTRL_RECTANGLE,
        ID_RECT2,
        110, 60, 80, 40,
        WS_VISIBLE,
        WS_EX_NONE,
        "",
        rect2_props, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    ...
    {
        NCSCTRL_RECTANGLE,
        ID_RECT3,
        110, 110, 80, 40,
        WS_VISIBLE,
        WS_EX_NONE,
        "",
        rect3_props, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    ...
    {
        NCSCTRL_RECTANGLE,
        ID_RECT4,
        110, 160, 80, 40,
        WS_VISIBLE,
        WS_EX_NONE,
        "",
        rect4_props, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
};

4.2 mRect 事件

4.3 mRect 方法

4.4 mRect 实例

本实例为用户演示了如何绘制各种矩形

rect

清单 3 rectangle.c

/*
* ** $Id$
* **
* ** Listing P2C4.3
* **
* ** rectangle.c: Sample program for mGNCS Programming Guide
* **      A mGNCS application for mRect.
* **
* ** Copyright (C) 2009 Feynman Software.
* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <mgncs/mgncs.h>

#define ID_RECT1  101
#define ID_RECT2  102
#define ID_RECT3  103
#define ID_RECT4  104

static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
        //TODO : initialize
        return TRUE;
}

static void mymain_onClose(mWidget* self, int message)
{
        DestroyMainWindow(self->hwnd);
        PostQuitMessage(0);
}


//Propties for
static NCS_PROP_ENTRY rect1_props [] = {
        {NCSP_RECTANGLE_BORDERSIZE, 3},
        {NCSP_RECTANGLE_BORDERCOLOR, 0xFFFF0000},
        {NCSP_RECTANGLE_FILLCOLOR, 0x00000000},
        {0, 0}
};

static NCS_PROP_ENTRY rect2_props [] = {
        {NCSP_RECTANGLE_BORDERSIZE, 2},
        {NCSP_RECTANGLE_BORDERCOLOR, 0xFFFFFFF},
        {NCSP_RECTANGLE_FILLCOLOR, 0xFF0F0F0F},
        {0, 0}
};

static NCS_PROP_ENTRY rect3_props [] = {
        {NCSP_RECTANGLE_BORDERSIZE, 0},
        {NCSP_RECTANGLE_BORDERCOLOR, 0xFF0C0000},
        {NCSP_RECTANGLE_FILLCOLOR, 0xFF00FFFF},
        {0, 0}
};

static NCS_PROP_ENTRY rect4_props [] = {
        {NCSP_RECTANGLE_BORDERSIZE, 5},
        {NCSP_RECTANGLE_BORDERCOLOR, 0xFF0000FF},
        {NCSP_RECTANGLE_FILLCOLOR, 0xFF00FF00},
        {NCSP_RECTANGLE_XRADIUS, 4},
        {NCSP_RECTANGLE_YRADIUS, 4},
        {0, 0}
};

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        {
                NCSCTRL_STATIC, 
                0,
                10, 10, 80, 40,
                WS_VISIBLE, WS_EX_NONE,
                "Normal rectangle:",
                NULL, NULL, NULL, NULL, 
                0, 0 
        },
        {
                NCSCTRL_RECTANGLE, 
                ID_RECT1,
                110, 10, 80, 40,
                WS_VISIBLE,
                WS_EX_NONE,
                "",
                rect1_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                10, 60, 80, 40,
                WS_VISIBLE, WS_EX_NONE,
                "Filled rectangle:",
                NULL, NULL, NULL, NULL, 
                0, 0 
        },
        {
                NCSCTRL_RECTANGLE, 
                ID_RECT2,
                110, 60, 80, 40,
                WS_VISIBLE,
                WS_EX_NONE,
                "",
                rect2_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                10, 110, 80, 40,
                WS_VISIBLE, WS_EX_NONE,
                "no Border rectangle:",
                NULL, NULL, NULL, NULL, 
                0, 0 
        },
        {
                NCSCTRL_RECTANGLE, 
                ID_RECT3,
                110, 110, 80, 40,
                WS_VISIBLE,
                WS_EX_NONE,
                "",
                rect3_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_STATIC, 
                0,
                10, 160, 80, 40,
                WS_VISIBLE, WS_EX_NONE,
                "Round rectangle:",
                NULL, NULL, NULL, NULL, 
                0, 0 
        },
        {
                NCSCTRL_RECTANGLE, 
                ID_RECT4,
                110, 160, 80, 40,
                WS_VISIBLE,
                WS_EX_NONE,
                "",
                rect4_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
};


static NCS_EVENT_HANDLER mymain_handlers[] = {
        {MSG_CREATE, mymain_onCreate },
        {MSG_CLOSE, mymain_onClose },
        {0, NULL }
};

//define the main window template
static NCS_MNWND_TEMPLATE mymain_templ = {
        NCSCTRL_DIALOGBOX, 
        1,
        0, 0, 320, 320,
        WS_CAPTION | WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "Rectangle Test ....",
        NULL,
        NULL,
        mymain_handlers,
        _ctrl_templ,
        sizeof(_ctrl_templ)/sizeof(NCS_WND_TEMPLATE),
        0,
        0, 0,
};

int MiniGUIMain(int argc, const char* argv[])
{
        ncsInitialize();
        mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect 
        (&mymain_templ, HWND_DESKTOP);
        
        printf("NCSP_RECTANGLE_BORDERSIZE=%d\n",NCSP_RECTANGLE_BORDERSIZE);
        
        _c(mydlg)->doModal(mydlg, TRUE);
        
        
        MainWindowThreadCleanup(mydlg->hwnd);
        
        ncsUninitialize ();
        return 0;
}

#ifdef _MGRM_THREADS
#include <minigui/dti.c>
#endif

5 mGroupbox

groupbox_show

  • 功能: 分组框,本控件用于为其他控件提供可识别的分组。通常,使用分组框按功能细分窗体,在分组框中对所有选项分组能为用户提供逻辑化的可视提示。
  • 继承自: mStatic
  • 直接子类:
    • mButtongroup

5.1 mGroupbox 属性

5.2 mGroupbox 事件

5.3 mGroupbox 方法

5.4 mGroupbox 渲染器

groupbox_rdr

用户可以方便的为分组框设置如上图所示的 classic、flat、fashion 渲染器,具体方法见如下代码:

...
static NCS_RDR_INFO grp_rdr_info[] = {
    {"fashion", "fashion", NULL}
//    {"flat", "flat", NULL}
//    {"classic", "classic", NULL}
};

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
    {
        NCSCTRL_GROUPBOX ,
        ID_GROUP,
        10, 10, 280, 180,
        WS_VISIBLE,
        WS_EX_NONE,
        "groupbox",
        NULL, //props,
        grp_rdr_info, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
};
...

5.5 mGroupbox 实例

groupbox

本实例为用户演示了如何生成带有渲染器的分组框

清单 4 groupbox.c

/*
* ** $Id$
* **
* ** Listing P2C4.4
* **
* ** groupbox.c: Sample program for mGNCS Programming Guide
* **      A mGNCS application for mGroupbox.
* **
* ** Copyright (C) 2009 Feynman Software.
* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <mgncs/mgncs.h>

#define ID_GROUP  101

static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
        //TODO : initialize
        return TRUE;
}

static void mymain_onClose(mWidget* self, int message)
{
        DestroyMainWindow(self->hwnd);
        PostQuitMessage(0);
}

static NCS_RDR_INFO grp_rdr_info[] = {
        //    {"fashion", "fashion", NULL}
        //    {"flat", "flat", NULL}
        //    {"classic", "classic", NULL}
        {"skin", "skin", NULL}
};

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        {
                NCSCTRL_GROUPBOX , 
                ID_GROUP,
                //        10, 10, 280, 180,
                10, 10, 140, 90,
                WS_VISIBLE,
                WS_EX_NONE,
                "groupbox",
                NULL, //props,
                grp_rdr_info, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
};


static NCS_EVENT_HANDLER mymain_handlers[] = {
        {MSG_CREATE, mymain_onCreate },
        {MSG_CLOSE, mymain_onClose },
        {0, NULL }
};

//define the main window template
static NCS_MNWND_TEMPLATE mymain_templ = {
        NCSCTRL_DIALOGBOX, 
        1,
        0, 0, 320, 240,
        WS_CAPTION | WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "Group Box Test ....",
        NULL,
        NULL,
        mymain_handlers,
        _ctrl_templ,
        sizeof(_ctrl_templ)/sizeof(NCS_WND_TEMPLATE),
        0,
        0, 0,
};

int MiniGUIMain(int argc, const char* argv[])
{
        if(argc > 1)
        {
                grp_rdr_info[0].glb_rdr = argv[1];
                grp_rdr_info[0].ctl_rdr = argv[1];
        }
        
        ncsInitialize();
        mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect 
        (&mymain_templ, HWND_DESKTOP);
        
        _c(mydlg)->doModal(mydlg, TRUE);
        
        
        MainWindowThreadCleanup(mydlg->hwnd);
        
        ncsUninitialize ();
        return 0;
}

#ifdef _MGRM_THREADS
#include <minigui/dti.c>
#endif

6 mButtonGroup

buttongroup_show

  • 功能: 本控件用于管理一组 RadioButton,使该组 RadioButton 能够互斥,从而实现单选功能。
  • 继承自: mGroupbox
  • 直接子类: 无

6.1 mButtonGroup 属性

属性名 类型 权限 属性说明
NCSP_BTNGRP_SELID int RW 当前选中的 radioButton ID 号
NCSP_BTNGRP_SELIDX idx RW 当前选中的 radioButton index 号
NCSP_BTNGRP_SELOBJ mWidget* RW 当前选中的 radioButton 的指针

6.2 mButtonGroup 方法

BOOL (*addButton)(clsName *group, mWidget *radio);
  • 功能:添加一个 radioButton
  • 返回值:BOOL
BOOL (*checkBtn)(clsName *group, mWidget *btn_to_check);
  • 功能:选中一个 radioButton
  • 返回值:BOOL

6.3 mButtonGroup 实例

buttongroup

请参见按钮系列控件类中的 mRadioButton

7 mLEDLabel

ledstatic_show

  • 功能: mLEDLabel 类是模仿 LED 数码管的静态框,用于显示 LED 字符,可用于工控等多种领域
  • 继承自: mStatic
  • 直接子类: 无

7.1 mLEDLabel 属性

属性名 类型 权限 属性说明
NCSP_LEDLBL_COLOR DWORD RW 设置 LED 字体的颜色,如红色为 0xFF0000FF
NCSP_LEDLBL_WIDTH int RW 设置 LED 字体的宽度
NCSP_LEDLBL_HEIGHT int RW 设置 LED 字体的高度

用户可以使用以下方法对属性进行设置:

//Propties for
static NCS_PROP_ENTRY static1_props [] = {
    { NCSP_LEDLBL_COLOR, 0xFF0000FF},
    { NCSP_LEDLBL_WIDTH, 10},
    { NCSP_LEDLBL_HEIGHT, 15},
    { NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT },
    { NCSP_STATIC_AUTOWRAP, 0 },
    {0, 0}
};

static NCS_PROP_ENTRY static2_props [] = {
    { NCSP_LEDLBL_COLOR, 0xFF0000FF},
    { NCSP_LEDLBL_WIDTH, 60},
    { NCSP_LEDLBL_HEIGHT, 90},
    { NCSP_STATIC_VALIGN, NCS_VALIGN_CENTER },
    { NCSP_STATIC_ALIGN, NCS_ALIGN_CENTER },
    {0, 0}
};

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
    {
        NCSCTRL_LEDLABEL , 
        IDC_LEDLBL1+0,
        10, 10, 160, 50,
        WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "ABC 123",
        NULL, //props, 取默认属性
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    {
        NCSCTRL_LEDLABEL , 
        IDC_LEDLBL1+2,
        10, 70, 160, 30,
        WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "2 4 6 8 0 ",
        static1_props, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },
    {
        NCSCTRL_LEDLABEL , 
        IDC_LEDLBL1+5,
        180, 10, 100, 100,
        WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "4",
        static2_props, //props,
        NULL, //rdr_info
        NULL, //handlers,
        NULL, //controls
        0,
        0 //add data
    },

};

7.2 mLEDLabel 风格

7.3 mLEDLabel 方法

7.4 mLEDLabel 渲染器

7.5 mLEDLabel 实例

ledlabel

本实例为用户演示了如何显示 LED 字符

/*
* ** $Id$
* **
* ** Listing P2C4.6
* **
* ** ledlabel.c: Sample program for mGNCS Programming Guide
* **      A mGNCS application for mLEDLabel.
* **
* ** Copyright (C) 2009 Feynman Software.
* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <mgncs/mgncs.h>

#define IDC_LEDLBL1 100
#define IDC_SATAICN 107

static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
        //TODO : initialize
        return TRUE;
}

static void mymain_onClose(mWidget* self, int message)
{
        DestroyMainWindow(self->hwnd);
        PostQuitMessage(0);
}


//Propties for
static NCS_PROP_ENTRY static1_props [] = {
        { NCSP_LEDLBL_COLOR, 0xFF0000FF},
        { NCSP_LEDLBL_WIDTH, 10},
        { NCSP_LEDLBL_HEIGHT, 15},
        { NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT },
        { NCSP_STATIC_AUTOWRAP, 0 },
        {0, 0}
};

static NCS_PROP_ENTRY static2_props [] = {
        { NCSP_LEDLBL_COLOR, 0xFF0000FF},
        { NCSP_LEDLBL_WIDTH, 60},
        { NCSP_LEDLBL_HEIGHT, 90},
        { NCSP_STATIC_VALIGN, NCS_VALIGN_CENTER },
        { NCSP_STATIC_ALIGN, NCS_ALIGN_CENTER },
        {0, 0}
};

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        {
                NCSCTRL_LEDLABEL , 
                IDC_LEDLBL1+0,
                10, 10, 160, 50,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "ABC 123",
                NULL, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_LEDLABEL , 
                IDC_LEDLBL1+2,
                10, 70, 160, 30,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "2 4 6 8 0 ",
                static1_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_LEDLABEL , 
                IDC_LEDLBL1+5,
                180, 10, 100, 100,
                WS_BORDER | WS_VISIBLE,
                WS_EX_NONE,
                "4",
                static2_props, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        
};


static NCS_EVENT_HANDLER mymain_handlers[] = {
        {MSG_CREATE, mymain_onCreate},
        {MSG_CLOSE, mymain_onClose},
        {0, NULL}
};

//define the main window template
static NCS_MNWND_TEMPLATE mymain_templ = {
        NCSCTRL_DIALOGBOX, 
        1,
        0, 0, 300, 150,
        WS_CAPTION | WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "LEDLabel Test ....",
        NULL,
        NULL,
        mymain_handlers,
        _ctrl_templ,
        sizeof(_ctrl_templ)/sizeof(NCS_WND_TEMPLATE),
        0,
        0, 0,
};

int MiniGUIMain(int argc, const char* argv[])
{
        ncsInitialize();
        mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect 
        (&mymain_templ, HWND_DESKTOP);
        
        _c(mydlg)->doModal(mydlg, TRUE);
        
        
        MainWindowThreadCleanup(mydlg->hwnd);
        
        ncsUninitialize ();
        return 0;
}

#ifdef _MGRM_THREADS
#include <minigui/dti.c>
#endif

8 mSeparator

separator_show

  • 功能: 用于分隔各个项控件并进行区域划分的水平或垂直分隔线
  • 继承自: mStatic
  • 直接子类: 无

8.1 mSeparator 属性

8.2 mSeparator 风格

属性名 说明
NCSS_SPRTR_VERT 设置为竖向分割线,默认为横向

用户可使用以下方法对风格进行设置:

...
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        ...,
        {
                NCSCTRL_SEPARATOR , 
                ID_GROUP,
                100, 20, 5, 200,
                WS_VISIBLE|NCSS_SPRTR_VERT,   //设置垂直风格
                WS_EX_NONE,
                "groupbox",
                NULL, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
};

8.3 mSeparator 事件

8.4 mSeparator 方法

8.5 mSeparator 渲染器

8.6 mSeparator 实例

separator

本实例为用户演示了如何生成水平和垂直分隔线

/*
* ** $Id$
* **
* ** Listing P2C4.7
* **
* ** separator.c: Sample program for mGNCS Programming Guide
* **      A mGNCS application for mSeparator.
* **
* ** Copyright (C) 2009 Feynman Software.
* */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <mgncs/mgncs.h>

#define ID_GROUP  101

static BOOL mymain_onCreate(mWidget* self, DWORD add_data)
{
        //TODO : initialize
        return TRUE;
}

static void mymain_onClose(mWidget* self, int message)
{
        DestroyMainWindow(self->hwnd);
        PostQuitMessage(0);
}

//Controls
static NCS_WND_TEMPLATE _ctrl_templ[] = {
        {
                NCSCTRL_SEPARATOR , 
                ID_GROUP,
                10, 10, 280, 5,
                WS_VISIBLE,
                WS_EX_NONE,
                "groupbox",
                NULL, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
        {
                NCSCTRL_SEPARATOR , 
                ID_GROUP,
                100, 20, 5, 200,
                WS_VISIBLE|NCSS_SPRTR_VERT,
                WS_EX_NONE,
                "groupbox",
                NULL, //props,
                NULL, //rdr_info
                NULL, //handlers,
                NULL, //controls
                0,
                0 //add data
        },
};


static NCS_EVENT_HANDLER mymain_handlers[] = {
        {MSG_CREATE, mymain_onCreate },
        {MSG_CLOSE, mymain_onClose },
        {0, NULL }
};

//define the main window template
static NCS_MNWND_TEMPLATE mymain_templ = {
        NCSCTRL_DIALOGBOX, 
        1,
        0, 0, 320, 240,
        WS_CAPTION | WS_BORDER | WS_VISIBLE,
        WS_EX_NONE,
        "Separator Test ....",
        NULL,
        NULL,
        mymain_handlers,
        _ctrl_templ,
        sizeof(_ctrl_templ)/sizeof(NCS_WND_TEMPLATE),
        0,
        0, 0,
};

int MiniGUIMain(int argc, const char* argv[])
{
        ncsInitialize();
        mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect 
        (&mymain_templ, HWND_DESKTOP);
        
        _c(mydlg)->doModal(mydlg, TRUE);
        
        
        MainWindowThreadCleanup(mydlg->hwnd);
        
        ncsUninitialize ();
        return 0;
}

#ifdef _MGRM_THREADS
#include <minigui/dti.c>
#endif