mirror of
https://github.com/VincentWei/minigui-docs.git
synced 2025-10-19 02:43:23 +08:00
395 lines
8.3 KiB
C
395 lines
8.3 KiB
C
/*
|
|
** container.c: Sample program for mGNCS Programming Guide
|
|
** The demo application for Container.
|
|
**
|
|
** Copyright (C) 2009 ~ 2019 FMSoft Technologies.
|
|
*/
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
// START_OF_INCS
|
|
#include <minigui/common.h>
|
|
#include <minigui/minigui.h>
|
|
#include <minigui/gdi.h>
|
|
#include <minigui/window.h>
|
|
#include <minigui/control.h>
|
|
|
|
#include <mgncs/mgncs.h>
|
|
// END_OF_INCS
|
|
|
|
#define IDC_CONTAINER 100
|
|
|
|
#define IDC_RDOGROUP 151
|
|
#define IDC_CKGROUP 152
|
|
|
|
#define IDC_LAMIAN 101
|
|
#define IDC_CHOUDOUFU 102
|
|
#define IDC_JIANBING 103
|
|
#define IDC_MAHUA 104
|
|
#define IDC_SHUIJIAO 105
|
|
#define IDC_XIAN 110
|
|
#define IDC_LA 111
|
|
#define IDC_PROMPT 200
|
|
|
|
// START_OF_NCSCTRLS
|
|
static NCS_PROP_ENTRY radioGroup_props [] = {
|
|
{NCSP_BUTTON_GROUPID, IDC_RDOGROUP},
|
|
{0, 0}
|
|
};
|
|
|
|
static NCS_WND_TEMPLATE ncsCtrlYourTaste[] = {
|
|
{
|
|
NCSCTRL_BUTTONGROUP,
|
|
IDC_RDOGROUP,
|
|
16, 10, 230, 160,
|
|
WS_VISIBLE,
|
|
WS_EX_TRANSPARENT,
|
|
"optional snack",
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_RADIOBUTTON,
|
|
IDC_LAMIAN,
|
|
36, 38, 200, 20,
|
|
WS_VISIBLE | WS_TABSTOP | NCSS_BUTTON_AUTOCHECK,
|
|
WS_EX_NONE,
|
|
"northwest pulled noodle",
|
|
radioGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_RADIOBUTTON,
|
|
IDC_CHOUDOUFU,
|
|
36, 64, 200, 20,
|
|
WS_VISIBLE | WS_TABSTOP | NCSS_BUTTON_AUTOCHECK,
|
|
WS_EX_NONE,
|
|
"chang sha bad smelling bean curd",
|
|
radioGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_RADIOBUTTON,
|
|
IDC_JIANBING,
|
|
36, 90, 200, 20,
|
|
WS_VISIBLE | WS_TABSTOP | WS_DISABLED,
|
|
WS_EX_NONE,
|
|
"shan dong thini pancake",
|
|
radioGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_RADIOBUTTON,
|
|
IDC_MAHUA,
|
|
36, 116, 200, 20,
|
|
WS_VISIBLE | WS_TABSTOP | NCSS_BUTTON_AUTOCHECK,
|
|
WS_EX_NONE,
|
|
"tianjin fired dough twist",
|
|
radioGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_RADIOBUTTON,
|
|
IDC_SHUIJIAO,
|
|
36, 142, 200, 20,
|
|
WS_VISIBLE | WS_TABSTOP | NCSS_BUTTON_AUTOCHECK,
|
|
WS_EX_NONE,
|
|
"chengdu red oil boiled dumpling",
|
|
radioGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_BUTTONGROUP,
|
|
IDC_CKGROUP,
|
|
250, 10, 100, 160,
|
|
WS_VISIBLE,
|
|
WS_EX_TRANSPARENT,
|
|
"flavor",
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_CHECKBUTTON,
|
|
IDC_XIAN,
|
|
260, 38, 80, 20,
|
|
WS_VISIBLE | NCSS_BUTTON_AUTOCHECK,
|
|
WS_EX_NONE,
|
|
"partial salty",
|
|
//checkGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_CHECKBUTTON,
|
|
IDC_LA,
|
|
260, 64, 80, 20,
|
|
WS_VISIBLE | NCSS_BUTTON_AUTOCHECK,
|
|
WS_EX_NONE,
|
|
"partial spicy",
|
|
//checkGroup_props,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_STATIC,
|
|
IDC_PROMPT,
|
|
16, 180, 360, 40,
|
|
WS_VISIBLE,
|
|
WS_EX_NONE,
|
|
"northwest pulled noodle is competitive product in the wheaten food",
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_BUTTON,
|
|
IDOK,
|
|
70, 230, 70, 30,
|
|
WS_VISIBLE | WS_TABSTOP | NCSS_NOTIFY,
|
|
WS_EX_NONE,
|
|
"Ok",
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
{
|
|
NCSCTRL_BUTTON,
|
|
IDCANCEL,
|
|
200, 230, 70, 30,
|
|
WS_VISIBLE | WS_TABSTOP | NCSS_NOTIFY,
|
|
WS_EX_NONE,
|
|
"Cancel",
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0,
|
|
0
|
|
},
|
|
};
|
|
// END_OF_NCSCTRLS
|
|
|
|
// START_OF_INTRINSICCTRLS
|
|
static CTRLDATA CtrlYourTaste[] =
|
|
{
|
|
{
|
|
"static",
|
|
WS_VISIBLE | SS_GROUPBOX,
|
|
16, 10, 230, 160,
|
|
IDC_STATIC,
|
|
"optional snack",
|
|
0,
|
|
WS_EX_TRANSPARENT
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTORADIOBUTTON | BS_CHECKED | WS_TABSTOP | WS_GROUP,
|
|
36, 38, 200, 20,
|
|
IDC_LAMIAN,
|
|
"northwest pulled noodle",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTORADIOBUTTON,
|
|
36, 64, 200, 20,
|
|
IDC_CHOUDOUFU,
|
|
"chang sha bad smelling bean curd",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTORADIOBUTTON | WS_DISABLED,
|
|
36, 90, 200, 20,
|
|
IDC_JIANBING,
|
|
"shan dong thini pancake",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTORADIOBUTTON,
|
|
36, 116, 200, 20,
|
|
IDC_MAHUA,
|
|
"tianjin fired dough twist",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTORADIOBUTTON,
|
|
36, 142, 200, 20,
|
|
IDC_SHUIJIAO,
|
|
"chengdu red oil boiled dumpling",
|
|
0
|
|
},
|
|
{
|
|
"static",
|
|
WS_VISIBLE | SS_GROUPBOX | WS_GROUP,
|
|
250, 10, 100, 160,
|
|
IDC_STATIC,
|
|
"flavor",
|
|
0,
|
|
WS_EX_TRANSPARENT
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTOCHECKBOX,
|
|
260, 38, 80, 20,
|
|
IDC_XIAN,
|
|
"partial salty",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_AUTOCHECKBOX | BS_CHECKED,
|
|
260, 64, 80, 20,
|
|
IDC_LA,
|
|
"partial spicy",
|
|
0
|
|
},
|
|
{
|
|
"static",
|
|
WS_VISIBLE | SS_LEFT | WS_GROUP | WS_BORDER,
|
|
16, 180, 360, 40,
|
|
IDC_PROMPT,
|
|
"northwest pulled noodle is competitive product in the wheaten food",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP | WS_BORDER ,
|
|
70, 230, 70, 30,
|
|
IDOK,
|
|
"OK",
|
|
0
|
|
},
|
|
{
|
|
"button",
|
|
WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP,
|
|
200, 230, 70, 30,
|
|
IDCANCEL,
|
|
"Cancel",
|
|
0
|
|
},
|
|
};
|
|
// END_OF_INTRINSICCTRLS
|
|
|
|
// START_OF_HANDLERS
|
|
static void dialog_onCSizeChanged(mWidget* self, int clientWidth, int clientHeight)
|
|
{
|
|
HWND hContainer = GetDlgItem(self->hwnd, IDC_CONTAINER);
|
|
if (hContainer != HWND_NULL || hContainer != HWND_INVALID)
|
|
MoveWindow(hContainer, 0, 0, clientWidth, clientHeight, TRUE);
|
|
}
|
|
|
|
static BOOL container_onCommand(mWidget* self, int id, int nc, HWND hCtrl)
|
|
{
|
|
if (id == IDOK || id == IDCANCEL) {
|
|
|
|
if (nc == NCSN_BUTTON_PUSHED) {
|
|
//close dialog
|
|
HWND hParent = GetParent(self->hwnd);
|
|
SendNotifyMessage(hParent,
|
|
MSG_COMMAND, (WPARAM)MAKELONG(id, nc), (LPARAM)hCtrl);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
static NCS_EVENT_HANDLER container_handlers[] = {
|
|
{MSG_COMMAND, container_onCommand},
|
|
{0, NULL}
|
|
};
|
|
// END_OF_HANDLERS
|
|
|
|
int MiniGUIMain(int argc, const char* argv[])
|
|
{
|
|
ncsInitialize ();
|
|
|
|
mDialogBox* dialog = (mDialogBox*)ncsCreateMainWindow (
|
|
NCSCTRL_DIALOGBOX, "Container Demo",
|
|
WS_CAPTION | WS_BORDER | WS_VISIBLE | NCSS_MNWND_MODE,
|
|
WS_EX_NONE,
|
|
1,
|
|
0, 0, 400, 320,
|
|
HWND_DESKTOP,
|
|
0, 0,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
0);
|
|
|
|
ncsSetComponentHandler((mComponent*)dialog,
|
|
MSG_CSIZECHANGED, dialog_onCSizeChanged);
|
|
|
|
mContainer *container =
|
|
(mContainer*)ncsCreateWindow (NCSCTRL_CONTAINER,
|
|
"",
|
|
WS_BORDER | WS_VISIBLE,
|
|
WS_EX_NONE,
|
|
IDC_CONTAINER,
|
|
0, 0, 300, 200, dialog->hwnd,
|
|
NULL, NULL, container_handlers, 0);
|
|
|
|
if (argc > 1 && strcmp(argv[1], "intrinsic") == 0) {
|
|
_c(container)->addIntrinsicControls (container, CtrlYourTaste,
|
|
sizeof(CtrlYourTaste)/sizeof(CTRLDATA));
|
|
}
|
|
else {
|
|
_c(container)->addChildren(container, ncsCtrlYourTaste,
|
|
sizeof(ncsCtrlYourTaste)/sizeof(NCS_WND_TEMPLATE));
|
|
}
|
|
|
|
_c(dialog)->doModal(dialog, TRUE);
|
|
|
|
MainWindowThreadCleanup (dialog->hwnd);
|
|
ncsUninitialize ();
|
|
|
|
return 0;
|
|
}
|