⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridview.c

📁 miniGUI最新版本增加了许多功能
💻 C
字号:
/* * ** $Id: gridview.c,v 1.15 2007-10-25 08:19:19 weiym Exp $ * ** * ** gridview.c: Sample program for MiniGUI Programming Guide * **      Usage of GRID control. * ** * ** Copyright (C) 2004 ~ 2007 Feynman Software. * ** * ** License: GPL * */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/stat.h>#include <sys/types.h>#include <minigui/common.h>#include <minigui/minigui.h>#ifdef _EXT_CTRL_GRIDVIEW#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>int ww = 400;int wh = 240;enum {    IDC_GRIDVIEW,};static HWND hGVWnd;static char* colnames[] = {#ifdef _LANG_ZHCN    "语文", "数学", "英语", "总分"#else    "Chinese", "Math", "English", "Total"#endif};static char* scores[] = {#ifdef _LANG_ZHCN    "小明", "小强","小亮", "小力", "平均分"#else    "Rose", "Joan","Rob", "John", "Average"#endif};int total(GRIDCELLS* target, GRIDCELLS* source, DWORD dwAddData){    int i, j;    double value = 0;    GRIDCELLDATA data;    GRIDCELLS cells;    GRIDCELLDATANUMBER num;    memset(&data, 0, sizeof(data));    memset(&num, 0, sizeof(num));    data.mask = GVITEM_MAINCONTENT|GVITEM_STYLE;    data.content = &num;    data.style = GV_TYPE_NUMBER;    cells.width = 1;    cells.height = 1;    for(i = 0; i<source->width; i++)    {        cells.column = source->column + i;        for (j = 0; j<source->height; j++)        {            cells.row = source->row + j;            SendMessage(hGVWnd, GRIDM_GETCELLPROPERTY, (WPARAM)&cells, (LPARAM)&data);            value += num.number;        }    }    num.number = value;    num.len_format = -1;    cells.row = target->row;    cells.column = target->column;    SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cells, (LPARAM)&data);        return 0;}int averge(GRIDCELLS* target, GRIDCELLS* source, DWORD dwAddData){    int i, j;    int count = 0;    double value = 0;    GRIDCELLDATA data;    GRIDCELLS cells;    GRIDCELLDATANUMBER num;    memset(&data, 0, sizeof(data));    memset(&num, 0, sizeof(num));    data.content = &num;    data.style = GV_TYPE_NUMBER;    cells.width = 1;    cells.height = 1;    for(i = 0; i<source->width; i++)    {        cells.column = source->column + i;        for (j = 0; j<source->height; j++)        {            data.content = &num;            data.style = GV_TYPE_NUMBER;            cells.row = source->row + j;            SendMessage(hGVWnd, GRIDM_GETCELLPROPERTY, (WPARAM)&cells, (LPARAM)&data);            value += num.number;            count++;        }    }    data.mask = GVITEM_MAINCONTENT;    num.number = value/count;    cells.row = target->row;    cells.column = target->column;    SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cells, (LPARAM)&data);        return 0;}static intControlTestWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){    switch (message)    {        case MSG_CREATE:            {                int i;                GRIDCELLS cellsel;                GRIDCELLDEPENDENCE dep;                GRIDCELLDATA celldata;                GRIDCELLDATAHEADER header;                GRIDCELLDATANUMBER cellnum;                GRIDVIEWDATA gvdata;                gvdata.nr_rows = 4;                gvdata.nr_cols = 3;                gvdata.row_height = 20;                gvdata.col_width  = 60;                hGVWnd = CreateWindowEx (CTRL_GRIDVIEW, "Grid View",                                           WS_CHILD | WS_VISIBLE | WS_VSCROLL |                                           WS_HSCROLL | WS_BORDER, WS_EX_NONE, IDC_GRIDVIEW, 20, 20, 304,124, hWnd, (DWORD)&gvdata);                memset(&header, 0, sizeof(header));                memset(&celldata, 0, sizeof(celldata));                //设置列表头的属性                for (i = 1; i<= 3; i++)                {                    header.buff = colnames[i-1];                    header.len_buff = -1;                    celldata.content = &header;                    celldata.mask = GVITEM_MAINCONTENT;                    celldata.style = GV_TYPE_HEADER;                    cellsel.row = 0;                    cellsel.column = i;                    cellsel.width = 1;                    cellsel.height = 1;                    SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cellsel, (LPARAM)&celldata);                }                //设置行表头的属性                memset(&header, 0, sizeof(header));                memset(&celldata, 0, sizeof(celldata));                for (i = 1; i<= 4; i++)                {                    header.buff =  scores[i-1];                    header.len_buff = -1;                    celldata.content = &header;                    celldata.mask = GVITEM_MAINCONTENT;                    celldata.style = GV_TYPE_HEADER;                    cellsel.row = i;                    cellsel.column = 0;                    cellsel.width = 1;                    cellsel.height = 1;                    SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cellsel, (LPARAM)&celldata);                }                //设置单元格的属性                memset(&celldata, 0, sizeof(celldata));                memset(&cellnum, 0, sizeof(cellnum));                cellnum.number = 50;                cellnum.format = NULL;                celldata.content = &cellnum;                celldata.mask = GVITEM_MAINCONTENT;                celldata.style = GV_TYPE_NUMBER;                cellsel.row = 1;                cellsel.column = 1;                cellsel.width = 3;                cellsel.height = 4;                SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cellsel, (LPARAM)&celldata);                                //增加一列的操作                memset(&header, 0, sizeof(header));                memset(&celldata, 0, sizeof(celldata));#ifdef _LANG_ZHCN                header.buff = "总分";#else                header.buff = "Total";#endif                header.size = -1;                celldata.mask = GVITEM_MAINCONTENT;                celldata.content = &header;                celldata.style = GV_TYPE_HEADER;                SendMessage(hGVWnd, GRIDM_ADDCOLUMN, 3, (LPARAM)&celldata);                //增加一行的操作                memset(&header, 0, sizeof(header));                memset(&celldata, 0, sizeof(celldata));#ifdef _LANG_ZHCN                header.buff = "平均分";#else                header.buff = "Average";#endif                header.size = -1;                celldata.mask = GVITEM_MAINCONTENT;                celldata.content = &header;                celldata.style = GV_TYPE_HEADER;                SendMessage(hGVWnd, GRIDM_ADDROW, 4, (LPARAM)&celldata);                memset(&celldata, 0, sizeof(celldata));                memset(&cellnum, 0, sizeof(cellnum));                cellnum.number = 0;                cellnum.format = NULL;                celldata.content = &cellnum;                celldata.mask = GVITEM_MAINCONTENT;                celldata.style = GV_TYPE_NUMBER;                cellsel.row = 1;                cellsel.column = 4;                cellsel.width = 1;                cellsel.height = 4;                SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cellsel, (LPARAM)&celldata);                cellsel.row = 5;                cellsel.column = 1;                cellsel.width = 4;                cellsel.height = 1;                SendMessage(hGVWnd, GRIDM_SETCELLPROPERTY, (WPARAM)&cellsel, (LPARAM)&celldata);                // 给这个单元格设置求和函数.                memset(&dep, 0, sizeof(dep));                dep.callback = total;                for (i = 1; i<= 4; i++)                {                    dep.source.row = i;                    dep.source.column = 1;                    dep.source.width = 3;                    dep.source.height = 1;                    dep.target.row = i;                    dep.target.column = 4;                    dep.target.width = 1;                    dep.target.height = 1;                    SendMessage(hGVWnd, GRIDM_ADDDEPENDENCE, 0, (LPARAM)&dep);                }                dep.callback = averge;                // 给这个单元格设置求平均值函数.                for (i = 1; i<= 4; i++)                {                    dep.source.row = 1;                    dep.source.column = i;                    dep.source.width = 1;                    dep.source.height = 4;                    dep.target.row = 5;                    dep.target.column = i;                    dep.target.width = 1;                    dep.target.height = 1;                    SendMessage(hGVWnd, GRIDM_ADDDEPENDENCE, 0, (LPARAM)&dep);                }                return 0;            }        case MSG_COMMAND:            break;        case MSG_CLOSE:            PostQuitMessage (hWnd);            DestroyMainWindow (hWnd);            return 0;                }    return DefaultMainWinProc (hWnd, message, wParam, lParam);}int MiniGUIMain (int argc, const char* argv[]){    MSG Msg;    HWND hMainWnd;    MAINWINCREATE CreateInfo;#ifdef _MGRM_PROCESSES    JoinLayer(NAME_DEF_LAYER , "gridview" , 0 , 0);#endif    if (!InitMiniGUIExt()) {        return 2;    }    CreateInfo.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;    CreateInfo.dwExStyle = WS_EX_NONE;#ifdef _LANG_ZHCN    CreateInfo.spCaption = "网格控件";#else    CreateInfo.spCaption = "GridView Controler";#endif    CreateInfo.hMenu = 0;    CreateInfo.hCursor = GetSystemCursor(0);    CreateInfo.hIcon = 0;    CreateInfo.MainWindowProc = ControlTestWinProc;    CreateInfo.lx = 0;    CreateInfo.ty = 0;    CreateInfo.rx = ww;    CreateInfo.by = wh;    CreateInfo.iBkColor = COLOR_lightwhite;    CreateInfo.dwAddData = 0;    CreateInfo.hHosting = HWND_DESKTOP;        hMainWnd = CreateMainWindow (&CreateInfo);        if (hMainWnd == HWND_INVALID)        return -1;    ShowWindow(hMainWnd, SW_SHOWNORMAL);    while (GetMessage(&Msg, hMainWnd)) {        TranslateMessage(&Msg);        DispatchMessage(&Msg);    }    MainWindowCleanup (hMainWnd);    MiniGUIExtCleanUp ();    return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif#elseint MiniGUIMain (int argc, const char* argv[]){    printf ("The GridView control is not enabled in your MiniGUI\n");    return -1;}#endif /*_EXT_CTRL_GRIDVIEW*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -