mirror of
https://github.com/VincentWei/minigui-docs.git
synced 2025-10-16 23:08:02 +08:00
26 KiB
26 KiB
编辑框系列控件
1 编辑框控件简介
编辑框控件(Edit)是GUI系统中不可或缺的的重要控件之一,主要用于接受用户的字符输入,实现用户交互和文本编辑的功能。实现上分为单行编辑框(Single Line Edit)和多行编辑框(Multiline Edit),单行编辑框用来接受用户内容相对简单的单行文本输入,与之相对,多行文本用来接受复杂的、大量的文本的输入。
- 编辑框类层次关系
- 示例图:
2 mEdit
- 控件窗口类:
NCSCTRL_EDIT
- 控件英文名:
Edit
- 简介: 编辑框系列控件的基础类,是单行编辑框和多行编辑框的抽象父类,定义了两者共同的使用接口。
- 示意图:
抽象类,不能直接使用
2.1 mEdit
风格
继承自 mScrollView 的风格
风格名 | mstudio 属性名 | 说明 |
---|---|---|
NCSS_EDIT_LEFT |
Align->Left |
左对齐 |
NCSS_EDIT_CENTER |
Align->Center |
水平居中 |
NCSS_EDIT_RIGHT |
Align->Right |
右对齐 |
NCSS_EDIT_UPPERCASE |
Case->Upper |
输入内容自动转成大写 |
NCSS_EDIT_LOWERCASE |
Case->Lower |
输入内容自动转成小写 |
NCSS_EDIT_NOHIDESEL |
HideSel->FALSE |
当编辑框失去焦点的时候,选中的内容依然保持选中状态 |
NCSS_EDIT_READONLY |
ReadOnly->TRUE |
内容只读 |
NCSS_EDIT_BASELINE |
BaseLine->TRUE |
内容带下划线显示 |
2.2 mEdit
属性
继承自 mScrollView 的属性
属性 | mstudio 属性名 | 类型 | 权限 | 说明 |
---|---|---|---|---|
NCSP_EDIT_LIMITTEXT |
MaxLength |
int | RW |
字符数目限定值 |
NCSP_EDIT_CARETPOS |
-- | int | RW |
光标位置 |
2.3 mEdit
事件
继承自 mScrollView 的事件
事件 ID | 参数 | 说明 |
---|---|---|
NCSN_EDIT_CHANGE |
-- | 内容变化 |
NCSN_EDIT_CONTCHANGED |
-- | 当 edit 失去焦点时,内容发生变化了 |
NCSN_EDIT_UPDATE |
-- | 内容被刷新,当通过 setText , resetContent , 方法改变时,或改变属性时 |
NCSN_EDIT_SELCHANGED |
-- | 选中部分改变 |
NCSN_EDIT_MAXTEXT |
-- | 字符数量饱和 |
NCSN_EDIT_SETFOCUS |
-- | 获得焦点 |
NCSN_EDIT_KILLFOCUS |
-- | 失去焦点 |
2.4 mEdit
方法
继承自 mScrollView 的方法
2.4.1 setContent
void setContent(mEdit *self, const char* str, int start, int len)
- 参数:
- str -- 显示在 edit 中的文字内容
- start -- 显示开始位置(相对 str 的起始位置),0 表示从头开始
- len -- 显示字符数目,-1 表示一直到 str 的结束为止
- 说明:
设置编辑框的显示内容,该方法会从str字符串中获取从第 start 个字符位置开始的一共 len 个字符,替换掉 edit 中现有的内容。 - 示例:
//edit中会显示字符串"dddd Show Me"从第6个字符开始一直到结尾的字符串,这里就是“Show Me”
_c(edit)->setContent(edit, "dddd Show Me", 6, -1);
2.4.2 replaceText
void replaceText(mEdit *self, const char* str,
int start, int len, int replace_start, int replace_end)
- 参数:
- str -- 用于替换的源字符串
- start -- 用于替换的源文本相对于 str 的的偏移,0表示从头开始
- len -- 用到的源文本的长度,-1 表示从 start 开始,直到 str 结束
replace_start
-- 替换开始的位置(相对于 edit 中的现有内容)replace_end
-- 替换结束的位置(相对于 edit 中的现有内容)
- 说明:
字符串的替换,该方法会从 str 字符串中获取从第 start 个字符位置开始的一共 len 个字符,替换掉 edit 中现有的从replace_start
到repalce_end
的内容。str 是要替换成的字符串,start 是相对 str 的起始位置,0 表示从头开始,len 是长度,-1 表示一直到 str 的结束为止,replace_start
、replace_end
分别是要替换的位置的起点和终点,是相对于 edit 中现有的文本内容的位置偏移。 - 示例:
//edit中会用字符串"dddd Show Me"从第6个字符开始一直到结尾的字符串(这里就是“Show Me”),
//来替换掉edit中现有文本的从第二个到第十个的字符
_c(edit)->replaceText(edit, "dddd Show Me", 6, -1, 2, 10);
2.4.3 insert
void insert(mEdit *self, const char* str, int start, int len, int at)
- 参数:
- str -- 要插入的源字符串
- start -- 使用到的源文本的起始位置,0 表示从头开始
- len -- 使用到的源文本的长度,-1 表示从 start 开始,直到 str 结束
- at -- 插入点的位置(相对于 edit 中的现有内容),-1 表示结尾处
- 说明:
字符串的插入,该方法会从 str 字符串中获取从第 start 个字符位置开始的一共 len 个字符,插入到edit中现有的内容的第 at 个字符的位置。str 是要插入的字符串,start 是相对 str 的起始位置,0 表示从头开始,len 是长度,-1 表示一直到 str 的结束为止, at 参数是要插入的位置,是相对于 edit 中现有的文本内容的位置偏移。 - 示例:
//edit中会用字符串"dddd Show Me"从第6个字符开始一直到结尾的字符串(这里就是“Show Me”),
//来插入到edit中现有文本的从第二个字符之后
_c(edit)->insert(edit, "dddd Show Me", 6, -1, 2);
2.4.4 append
void append(mEdit *self, const char* str, int start, int len)
- 参数:
- str -- 要追加的源字符串
- start -- 使用到的源文本的起始位置,0 表示从头开始
- len -- 使用到的源文本的长度,-1 表示从 start 开始,直到 str 结束
- 说明:
字符串的追加,该方法会从 str 字符串中获取从第 start 个字符位置开始的一共 len 个字符,追加到 edit 中现有的内容的后面。str 是要追加的字符串,start 是相对 str 的起始位置,0 表示从头开始,len 是长度,-1 表示一直到 str 的结束为止。 - 示例:
//edit中会用字符串"dddd Show Me"从第6个字符开始一直到结尾的字符串(这里就是“Show Me”),
//来追加到edit中现有文本的末尾
_c(edit)->append(edit, "dddd Show Me", 6, -1);
2.4.5 getTextLength
int getTextLength(mEdit *self)
- 说明:
获取 Edit 中字符串内容的长度 - 示例:
int text_len = _c(edit)->getTextLength(edit);
2.4.6 getContent
int getContent(mEdit *self, char *strbuff, int buf_len, int start, int end)
- 参数:
- strbuff -- 获取到字符串的存放位置(应该提前分配好存放空间)
buff_len
-- strbuff 的大小- start -- 获取内容的起始位置
- end -- 获取内容的终止位置
- 说明:
获取 Edit 中字符串内容,从现有的内容中获取从 start 到 end 位置的内容写入到 strbuff 中,写入的最大数目限定为buff_len
。 - 示例:
char buff[128];
_c(edit)->getContent(edit, buff, 127, 0, -1);//取出edit中的全部内容,buff最多存127个字符
2.4.7 setSel
、getSel
int setSel(mEdit *self, int start, int end)
int getSel(mEdit *self, int *pstart, int *pend)
- 参数:
- start\end -- 选中区域的起点、终点
- pstart\pend -- 选中区域的起点、终点,用于函数返回
- 说明:
设置、获取选中文本的区域,后两个参数分别对应选中区域的起点和终点。 - 示例:
_c(edit)->setSel(edit, 2, 10);//设置edit的第2~10个字符为选中状态
int ps,pe;
_c(edit)->getSel(edit, &ps, &pe);//获取选中区域
2.4.8 setMargin
void setMargin(mEdit *self, int left, int top, int right, int bottom)
- 参数:
- left, top, right, bottom -- 上下左右的留白,这个参数不是矩形的概念,只是沿用了矩形的数据结构方便参数传递
- 说明:
设置编辑区的上下左右留白 - 示例:
//设置留白
_c(edit)- >setMargin(edit, 10,10,10,10);
2.4.9 copy、paste、cut
void copy(mEdit *self)
void cut(mEdit *self)
void paste(mEdit *self)
TextCopyPaste * setCopyPaste(mEdit *self, TextCopyPaste* cp)
剪切、复制、粘贴都是针对选中区域的操作,edit 中默认实现了一组使用 minigui 剪切板的操作集,用户还可以通过 setCopyPaste
设置自己实现的操作集。
2.4.10 makevisible
BOOL makevisible(mEdit *self, int pos)
- 参数:
- pos -- 需要可见的位置
- 说明:
控制编辑区的滚动,使位置的字符变为可见。 - 示例:
//是第201个字符处可见
_c(edit)- >makevisible(edit, 201);
3 mSlEdit
- 控件窗口类:
NCSCTRL_SLEDIT
- 控件英文名: Single Line Edit 或者 SlEdit
- 简介: 单行文本编辑框
- 示意图:
3.1 mSlEdit
风格
继承自 mEdit 的风格
风格名 | mstudio 属性名 | 说明 |
---|---|---|
NCSS_SLEDIT_PASSWORD |
Password->TRUE |
编辑框的内容以密码输入的方式屏蔽显示 |
NCSS_SLEDIT_AUTOSELECT |
AutoSelect->TRUE |
自动选中风格,获得焦点后文本自动成选中状态 |
3.2 mSlEdit
属性
继承自 mEdit 的属性
属性 | mstudio 属性名 | 类型 | 权限 | 说明 |
---|---|---|---|---|
NCSP_SLEDIT_TIPTEXT |
ToolTip |
char * |
RW |
提示信息字符串,当没有输入时,用来提示用户的信息 |
NCSP_SLEDIT_PWDCHAR |
PasswordChar |
char | RW |
pass word 显示的字符,只有 NCSS_SLEDIT_PASSWORD 风格的有效,默认是‘*’ |
3.3 mSlEdit
事件
继承自 mEdit 的事件
事件 ID | 参数 | 说明 |
---|---|---|
NCSN_SLEDIT_ENTER |
-- | 捕获到 enter 键消息 |
3.4 mSlEdit
方法
继承自 mEdit 的方法
没有新引入的方法
3.5 mSlEdit
编程示例
SlEdit
示例代码 :edit.c
/*
** edit.c: Sample program for mGNCS Programming Guide
** Using edit.
**
** 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_NAME 104
#define ID_COUN 105
#define ID_CITY 106
#define ID_PSWD 107
#define ID_SPIN 108
#define ID_INFO 109
#define ID_REG 155
#define ID_CAN 156
static BOOL mymain_onCreate (mWidget* _this, DWORD add_data)
{
return TRUE;
}
static void mymain_onClose (mWidget* _this, int message)
{
DestroyMainWindow (_this->hwnd);
PostQuitMessage (_this->hwnd);
}
static NCS_EVENT_HANDLER mymain_handlers[] = {
{MSG_CREATE, mymain_onCreate},
{MSG_CLOSE, mymain_onClose},
{0, NULL}
};
static void btn_onClicked(mWidget* _this, int id, int nc, HWND hCtrl)
{
if(nc == NCSN_WIDGET_CLICKED)
{
if (id == ID_CAN){
PostMessage(GetParent(_this->hwnd), MSG_CLOSE, 0, 0);
} else if (id == ID_REG){
//TODO
}
}
};
static NCS_EVENT_HANDLER btn_handlers[] =
{
{NCS_NOTIFY_CODE(NCSN_WIDGET_CLICKED), btn_onClicked},
{0, NULL}
};
static NCS_RDR_INFO btn_rdr_info[] =
{
{"fashion","fashion", NULL}
};
static NCS_PROP_ENTRY static_props[] =
{
{NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT},
{0, 0}
};
static NCS_PROP_ENTRY spin_props [] =
{
{NCSP_SPNBOX_MAXPOS, 99},
{NCSP_SPNBOX_MINPOS, 0},
{NCSP_SPNBOX_CURPOS, 25},
{NCSP_SPNBOX_LINESTEP, 1},
{0, 0}
};
#define HSTART 25
#define HSPACE 40
static NCS_WND_TEMPLATE _ctrl_templ[] =
{
//START_OF_SLEDIT_TEMPLATE
{
NCSCTRL_STATIC,
0,
10, HSTART, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Name :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //左对齐
NCSCTRL_SLEDIT,
ID_NAME,
100, HSTART, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_LEFT,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Age :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_SPINBOX,
ID_SPIN,
100, HSTART + HSPACE, 70, 25,
WS_VISIBLE | NCSS_SPNBOX_NUMBER | NCSS_SPNBOX_AUTOLOOP,
WS_EX_NONE,
"",
spin_props,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 2 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Country:",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //居中对齐, 大写字母
NCSCTRL_SLEDIT,
ID_COUN,
100, HSTART + 2 * HSPACE, 130, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_CENTER | NCSS_EDIT_UPPERCASE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 3 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"City :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //小写字母
NCSCTRL_SLEDIT,
ID_CITY,
100, HSTART + 3 * HSPACE, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_LOWERCASE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 4 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Passwd :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //密码输入形式的edit
NCSCTRL_SLEDIT,
ID_PSWD,
100, HSTART + 4 * HSPACE, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_SLEDIT_PASSWORD,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
//END_OF_SLEDIT_TEMPLATE
//START_OF_MLEDIT_TEMPLATE
{
NCSCTRL_STATIC,
0,
10, HSTART + 5 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Info :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //多行编辑框
NCSCTRL_MLEDIT,
ID_INFO,
100, HSTART + 5 * HSPACE, 200, 160,
WS_BORDER | WS_VISIBLE | WS_VSCROLL | NCSS_EDIT_BASELINE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
//END_OF_MLEDIT_TEMPLATE
{
NCSCTRL_BUTTON,
ID_REG,
240, 400, 80, 25,
WS_VISIBLE | NCSS_NOTIFY,
WS_EX_NONE,
"Register",
NULL,
btn_rdr_info,
btn_handlers, NULL, 0, 0
},
{
NCSCTRL_BUTTON,
ID_CAN,
120, 400, 80, 25,
WS_VISIBLE | NCSS_NOTIFY,
WS_EX_NONE,
"Cancel",
NULL,
btn_rdr_info,
btn_handlers, NULL, 0, 0
},
};
static NCS_MNWND_TEMPLATE mymain_templ =
{
NCSCTRL_DIALOGBOX,
1,
0, 0, 360, 480,
WS_CAPTION | WS_BORDER | WS_VISIBLE,
WS_EX_NONE,
"Register",
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);
ncsUninitialize ();
return 0;
}
- 我们这样来定义
SlEdit
的使用模板
{
NCSCTRL_STATIC,
0,
10, HSTART, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Name :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //左对齐
NCSCTRL_SLEDIT,
ID_NAME,
100, HSTART, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_LEFT,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Age :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_SPINBOX,
ID_SPIN,
100, HSTART + HSPACE, 70, 25,
WS_VISIBLE | NCSS_SPNBOX_NUMBER | NCSS_SPNBOX_AUTOLOOP,
WS_EX_NONE,
"",
spin_props,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 2 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Country:",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //居中对齐, 大写字母
NCSCTRL_SLEDIT,
ID_COUN,
100, HSTART + 2 * HSPACE, 130, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_CENTER | NCSS_EDIT_UPPERCASE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 3 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"City :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //小写字母
NCSCTRL_SLEDIT,
ID_CITY,
100, HSTART + 3 * HSPACE, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_LOWERCASE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 4 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Passwd :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //密码输入形式的edit
NCSCTRL_SLEDIT,
ID_PSWD,
100, HSTART + 4 * HSPACE, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_SLEDIT_PASSWORD,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
4 mMlEdit
- 控件窗口类:
NCSCTRL_MLEDIT
- 控件英文名: Multiline Edit 或者 MlEdit
- 简介: 多行文本编辑框
- 示意图:
4.1 mMlEdit
风格
继承自 mEdit 的风格
风格名 | mstudio 属性名 | 说明 |
---|---|---|
NCSS_MLEDIT_AUTOWRAP |
AutoWrap->TRUE |
自动换行 |
4.2 mMlEdit
属性
继承自 mEdit 的属性
属性 | mstudio 属性名 | 类型 | 权限 | 说明 |
---|---|---|---|---|
NCSP_MLEDIT_LINECOUNT |
-- | int | RO |
行数 |
NCSP_MLEDIT_LINEHEIGHT |
LineHeight |
int | RW |
行高 |
NCSP_MLEDIT_LINEFEEDISPCHAR |
-- | char | WO |
换行符改用该字符显示出来 |
NCSP_MLEDIT_LINESEP |
LineSeperator |
char | RW |
换行符标记,默认是‘\n’ |
NCSP_MLEDIT_CARETSHAPE |
CaretShap |
int | RW |
光标形状ED_CARETSHAPE_LINE 或者 ED_CARETSHAPE_BLOCK |
NCSP_MLEDIT_NUMOFPARAGRAPHS |
-- | int | RO |
段落的数目 |
4.3 mMlEdit
事件
继承自 mEdit 的事件
没有新引入的事件
4.4 mMlEdit
方法
继承自 mEdit 的方法
4.5 mMlEdit
编程示例
MlEdit
示例代码 :edit.c
/*
** edit.c: Sample program for mGNCS Programming Guide
** Using edit.
**
** 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_NAME 104
#define ID_COUN 105
#define ID_CITY 106
#define ID_PSWD 107
#define ID_SPIN 108
#define ID_INFO 109
#define ID_REG 155
#define ID_CAN 156
static BOOL mymain_onCreate (mWidget* _this, DWORD add_data)
{
return TRUE;
}
static void mymain_onClose (mWidget* _this, int message)
{
DestroyMainWindow (_this->hwnd);
PostQuitMessage (_this->hwnd);
}
static NCS_EVENT_HANDLER mymain_handlers[] = {
{MSG_CREATE, mymain_onCreate},
{MSG_CLOSE, mymain_onClose},
{0, NULL}
};
static void btn_onClicked(mWidget* _this, int id, int nc, HWND hCtrl)
{
if(nc == NCSN_WIDGET_CLICKED)
{
if (id == ID_CAN){
PostMessage(GetParent(_this->hwnd), MSG_CLOSE, 0, 0);
} else if (id == ID_REG){
//TODO
}
}
};
static NCS_EVENT_HANDLER btn_handlers[] =
{
{NCS_NOTIFY_CODE(NCSN_WIDGET_CLICKED), btn_onClicked},
{0, NULL}
};
static NCS_RDR_INFO btn_rdr_info[] =
{
{"fashion","fashion", NULL}
};
static NCS_PROP_ENTRY static_props[] =
{
{NCSP_STATIC_ALIGN, NCS_ALIGN_RIGHT},
{0, 0}
};
static NCS_PROP_ENTRY spin_props [] =
{
{NCSP_SPNBOX_MAXPOS, 99},
{NCSP_SPNBOX_MINPOS, 0},
{NCSP_SPNBOX_CURPOS, 25},
{NCSP_SPNBOX_LINESTEP, 1},
{0, 0}
};
#define HSTART 25
#define HSPACE 40
static NCS_WND_TEMPLATE _ctrl_templ[] =
{
//START_OF_SLEDIT_TEMPLATE
{
NCSCTRL_STATIC,
0,
10, HSTART, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Name :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //左对齐
NCSCTRL_SLEDIT,
ID_NAME,
100, HSTART, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_LEFT,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Age :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_SPINBOX,
ID_SPIN,
100, HSTART + HSPACE, 70, 25,
WS_VISIBLE | NCSS_SPNBOX_NUMBER | NCSS_SPNBOX_AUTOLOOP,
WS_EX_NONE,
"",
spin_props,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 2 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Country:",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //居中对齐, 大写字母
NCSCTRL_SLEDIT,
ID_COUN,
100, HSTART + 2 * HSPACE, 130, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_CENTER | NCSS_EDIT_UPPERCASE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 3 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"City :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //小写字母
NCSCTRL_SLEDIT,
ID_CITY,
100, HSTART + 3 * HSPACE, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_EDIT_LOWERCASE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
{
NCSCTRL_STATIC,
0,
10, HSTART + 4 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Passwd :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //密码输入形式的edit
NCSCTRL_SLEDIT,
ID_PSWD,
100, HSTART + 4 * HSPACE, 150, 25,
WS_BORDER | WS_VISIBLE | NCSS_SLEDIT_PASSWORD,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
//END_OF_SLEDIT_TEMPLATE
//START_OF_MLEDIT_TEMPLATE
{
NCSCTRL_STATIC,
0,
10, HSTART + 5 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Info :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //多行编辑框
NCSCTRL_MLEDIT,
ID_INFO,
100, HSTART + 5 * HSPACE, 200, 160,
WS_BORDER | WS_VISIBLE | WS_VSCROLL | NCSS_EDIT_BASELINE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},
//END_OF_MLEDIT_TEMPLATE
{
NCSCTRL_BUTTON,
ID_REG,
240, 400, 80, 25,
WS_VISIBLE | NCSS_NOTIFY,
WS_EX_NONE,
"Register",
NULL,
btn_rdr_info,
btn_handlers, NULL, 0, 0
},
{
NCSCTRL_BUTTON,
ID_CAN,
120, 400, 80, 25,
WS_VISIBLE | NCSS_NOTIFY,
WS_EX_NONE,
"Cancel",
NULL,
btn_rdr_info,
btn_handlers, NULL, 0, 0
},
};
static NCS_MNWND_TEMPLATE mymain_templ =
{
NCSCTRL_DIALOGBOX,
1,
0, 0, 360, 480,
WS_CAPTION | WS_BORDER | WS_VISIBLE,
WS_EX_NONE,
"Register",
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);
ncsUninitialize ();
return 0;
}
- 我们这样来定义
MlEdit
的使用模板
{
NCSCTRL_STATIC,
0,
10, HSTART + 5 * HSPACE, 70, 25,
WS_VISIBLE,
WS_EX_NONE,
"Info :",
static_props,
NULL,
NULL, NULL, 0, 0
},
{ //多行编辑框
NCSCTRL_MLEDIT,
ID_INFO,
100, HSTART + 5 * HSPACE, 200, 160,
WS_BORDER | WS_VISIBLE | WS_VSCROLL | NCSS_EDIT_BASELINE,
WS_EX_NONE,
"",
NULL,
NULL,
NULL, NULL, 0, 0
},