mirror of
https://github.com/VincentWei/minigui-docs.git
synced 2025-10-20 04:55:01 +08:00
add
This commit is contained in:
272
programming-guide-zh/samples/propsheet.c
Normal file
272
programming-guide-zh/samples/propsheet.c
Normal file
@@ -0,0 +1,272 @@
|
||||
/*
|
||||
** propsheet.c: Sample program for mGNCS Programming Guide
|
||||
** The demo application for PropSheet.
|
||||
**
|
||||
** 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 PAGE_VERSION 1
|
||||
#define PAGE_CPU 2
|
||||
#define PAGE_MEMINFO 3
|
||||
#define PAGE_PARTITION 4
|
||||
#define PAGE_MINIGUI 5
|
||||
|
||||
#define BUF_LEN 10240
|
||||
#define IDC_PROPSHEET 100
|
||||
#define IDC_SYSINFO 101
|
||||
#define IDC_REFRESH 102
|
||||
|
||||
static size_t read_sysinfo (const char* file, char* buff, size_t buf_len)
|
||||
{
|
||||
size_t size;
|
||||
FILE *fp = fopen (file, "r");
|
||||
|
||||
if (fp == NULL) return 0;
|
||||
|
||||
size = fread (buff, 1, buf_len, fp);
|
||||
|
||||
fclose (fp);
|
||||
return size;
|
||||
}
|
||||
|
||||
static void get_systeminfo (mPage* page)
|
||||
{
|
||||
int type;
|
||||
HWND hwnd;
|
||||
char buff [BUF_LEN + 1];
|
||||
size_t size = 0;
|
||||
|
||||
type = (int)GetWindowAdditionalData (page->hwnd);
|
||||
hwnd = GetDlgItem(_c(page)->getPanel(page), IDC_SYSINFO);
|
||||
buff [BUF_LEN] = 0;
|
||||
|
||||
switch (type) {
|
||||
case PAGE_VERSION:
|
||||
size = read_sysinfo ("/proc/version", buff, BUF_LEN);
|
||||
buff [size] = 0;
|
||||
break;
|
||||
|
||||
case PAGE_CPU:
|
||||
size = read_sysinfo ("/proc/cpuinfo", buff, BUF_LEN);
|
||||
buff [size] = 0;
|
||||
break;
|
||||
|
||||
case PAGE_MEMINFO:
|
||||
size = read_sysinfo ("/proc/meminfo", buff, BUF_LEN);
|
||||
buff [size] = 0;
|
||||
break;
|
||||
|
||||
case PAGE_PARTITION:
|
||||
size = read_sysinfo ("/proc/partitions", buff, BUF_LEN);
|
||||
buff [size] = 0;
|
||||
break;
|
||||
|
||||
case PAGE_MINIGUI:
|
||||
size = snprintf (buff, BUF_LEN,
|
||||
"MiniGUI version %d.%d.%d.\n"
|
||||
"Copyright (C) 1998-2009 ~ 2019 FMSoft Technologies.\n\n"
|
||||
"MiniGUI is a mature, rich-featured, embedded "
|
||||
"GUI support system.\n\n"
|
||||
"For more information, please visit\n\n"
|
||||
"http://www.minigui.com\n",
|
||||
MINIGUI_MAJOR_VERSION, MINIGUI_MINOR_VERSION, MINIGUI_MICRO_VERSION);
|
||||
break;
|
||||
}
|
||||
|
||||
if (size) {
|
||||
SetWindowText (hwnd, buff);
|
||||
}
|
||||
GetWindowText(hwnd, buff, BUF_LEN+1);
|
||||
}
|
||||
|
||||
// START_OF_PAGEHANDLERS
|
||||
static void mypage_onInitPage(mWidget* self, DWORD add_data)
|
||||
{
|
||||
get_systeminfo ((mPage*)self);
|
||||
}
|
||||
|
||||
static int mypage_onShowPage(mWidget* self, HWND hwnd, int show_cmd)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int mypage_onSheetCmd(mWidget* self, DWORD wParam, DWORD lParam)
|
||||
{
|
||||
if (wParam == IDC_REFRESH) {
|
||||
get_systeminfo ((mPage*)self);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static NCS_EVENT_HANDLER mypage_handlers[] = {
|
||||
{MSG_INITPAGE, mypage_onInitPage},
|
||||
{MSG_SHOWPAGE, mypage_onShowPage},
|
||||
{MSG_SHEETCMD, mypage_onSheetCmd},
|
||||
{0 , NULL }
|
||||
};
|
||||
// END_OF_PAGEHANDLERS
|
||||
|
||||
static void btn_notify(mWidget *self, int id, int nc, DWORD add_data)
|
||||
{
|
||||
mPropSheet *obj =
|
||||
(mPropSheet *)ncsGetChildObj(GetParent(self->hwnd), IDC_PROPSHEET);
|
||||
|
||||
if (obj) {
|
||||
_c(obj)->broadCastMsg(obj, IDC_REFRESH, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static NCS_EVENT_HANDLER btn_handlers [] = {
|
||||
NCS_MAP_NOTIFY(NCSN_BUTTON_PUSHED, btn_notify),
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static NCS_RDR_INFO btn_rdr_info[] =
|
||||
{
|
||||
{"classic","classic", NULL}
|
||||
};
|
||||
|
||||
static NCS_WND_TEMPLATE _ctrl_tmpl[] = {
|
||||
{
|
||||
NCSCTRL_BUTTON,
|
||||
IDC_REFRESH,
|
||||
10, 240, 70, 25,
|
||||
WS_VISIBLE | WS_TABSTOP,
|
||||
WS_EX_NONE,
|
||||
"Refresh",
|
||||
NULL,
|
||||
btn_rdr_info,
|
||||
btn_handlers,
|
||||
NULL,
|
||||
0,
|
||||
0
|
||||
},
|
||||
{
|
||||
NCSCTRL_BUTTON,
|
||||
IDCANCEL,
|
||||
330, 240, 70, 25,
|
||||
WS_VISIBLE | WS_TABSTOP,
|
||||
WS_EX_NONE,
|
||||
"Close",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
0,
|
||||
0
|
||||
},
|
||||
};
|
||||
|
||||
static DLGTEMPLATE PageSysInfo =
|
||||
{
|
||||
WS_BORDER | WS_CAPTION,
|
||||
WS_EX_NONE,
|
||||
0, 0, 0, 0,
|
||||
"",
|
||||
0, 0,
|
||||
1, NULL,
|
||||
0
|
||||
};
|
||||
|
||||
static CTRLDATA CtrlSysInfo [] =
|
||||
{
|
||||
{
|
||||
CTRL_STATIC,
|
||||
WS_VISIBLE | SS_LEFT,
|
||||
10, 10, 370, 180,
|
||||
IDC_SYSINFO,
|
||||
"test",
|
||||
0
|
||||
}
|
||||
};
|
||||
|
||||
static NCS_RDR_INFO prop_rdr_info[] =
|
||||
{
|
||||
{"classic", "classic", NULL},
|
||||
};
|
||||
|
||||
static int init_propsheet (mDialogBox* self)
|
||||
{
|
||||
// START_OF_CREATEPRPSHT
|
||||
mPropSheet *propsheet =
|
||||
(mPropSheet*) ncsCreateWindow (NCSCTRL_PROPSHEET,
|
||||
"", WS_VISIBLE | NCSS_PRPSHT_SCROLLABLE, WS_EX_NONE,
|
||||
IDC_PROPSHEET,
|
||||
10, 10, 390, 225, self->hwnd,
|
||||
NULL, prop_rdr_info, NULL, 0);
|
||||
// END_OF_CREATEPRPSHT
|
||||
|
||||
if (!propsheet) {
|
||||
fprintf (stderr, "Error> Create propsheet failure.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// START_OF_ADDPAGES
|
||||
PageSysInfo.controls = CtrlSysInfo;
|
||||
PageSysInfo.caption = "Version Info";
|
||||
PageSysInfo.dwAddData = PAGE_VERSION;
|
||||
_c(propsheet)->addPage(propsheet, &PageSysInfo, mypage_handlers);
|
||||
|
||||
PageSysInfo.caption = "CPU Info";
|
||||
PageSysInfo.dwAddData = PAGE_CPU;
|
||||
_c(propsheet)->addPage(propsheet, &PageSysInfo, mypage_handlers);
|
||||
|
||||
PageSysInfo.caption = "MEM Info";
|
||||
PageSysInfo.dwAddData = PAGE_MEMINFO;
|
||||
_c(propsheet)->addPage(propsheet, &PageSysInfo, mypage_handlers);
|
||||
|
||||
PageSysInfo.caption = "Partition Info";
|
||||
PageSysInfo.dwAddData = PAGE_PARTITION;
|
||||
_c(propsheet)->addPage(propsheet, &PageSysInfo, mypage_handlers);
|
||||
|
||||
PageSysInfo.caption = "MiniGUI Info";
|
||||
PageSysInfo.dwAddData = PAGE_MINIGUI;
|
||||
_c(propsheet)->addPage(propsheet, &PageSysInfo, mypage_handlers);
|
||||
// END_OF_ADDPAGES
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static NCS_MNWND_TEMPLATE mymain_tmpl = {
|
||||
NCSCTRL_DIALOGBOX,
|
||||
1,
|
||||
0, 0, 420, 305,
|
||||
WS_CAPTION | WS_BORDER | WS_VISIBLE,
|
||||
WS_EX_NONE,
|
||||
"PropSheet Demo",
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
_ctrl_tmpl,
|
||||
sizeof(_ctrl_tmpl)/sizeof(NCS_WND_TEMPLATE),
|
||||
0,
|
||||
0, 0,
|
||||
};
|
||||
|
||||
int MiniGUIMain(int argc, const char* argv[])
|
||||
{
|
||||
ncsInitialize();
|
||||
mDialogBox* mydlg = (mDialogBox *)ncsCreateMainWindowIndirect
|
||||
(&mymain_tmpl, HWND_DESKTOP);
|
||||
|
||||
init_propsheet(mydlg);
|
||||
_c(mydlg)->doModal(mydlg, TRUE);
|
||||
|
||||
MainWindowThreadCleanup(mydlg->hwnd);
|
||||
ncsUninitialize();
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user