📄 listview.c
字号:
/*** $Id: listview.c,v 1.24 2006/05/22 06:54:30 pengjing Exp $**** listview.c: Sample program for MiniGUI Programming Guide** Usage of LISTVIEW control.**** Copyright (C) 2004 ~ 2006 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>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>#define IDC_CHARS 10#define IDC_CTRL1 20#define IDC_CTRL2 30#define SUB_NUM 3static char * caption [] ={#ifdef _LANG_ZHCN "姓名", "语文", "数学", "英语"#else "Number", "Cigerate", "Price", "Guantity"#endif};#define COL_NR TABLESIZE(caption)static char *classes [] ={#ifdef _LANG_ZHCN "1班", "2班", "3班"#else "Grade 1", "Grade 2", "Grade 3"#endif};typedef struct _SCORE{ char *number; char *name; unsigned int price; unsigned int quantity;} SCORE;/*static SCORE scores[] ={#ifdef _LANG_ZHCN {"小明", {81, 96, 75}}, {"小强", {98, 62, 84}}, {"小亮", {79, 88, 89}}, {"小力", {79, 88, 89}},#else {"Tom", {81, 96, 75}}, {"Jack", {98, 62, 84}}, {"Merry", {79, 88, 89}}, {"Bob", {79, 88, 89}},#endif};*///#define SCORE_NUM TABLESIZE(scores)static GHANDLE add_class_item (HWND hlist, PLVITEM lvItem, GHANDLE classent){ LVSUBITEM subdata; GHANDLE item = SendMessage (hlist, LVM_ADDITEM, classent, (LPARAM)lvItem); subdata.nItem = lvItem->nItem; subdata.subItem = 0; subdata.pszText = classes[lvItem->nItem];; subdata.nTextColor = 0; subdata.flags = 0; subdata.image = 0; SendMessage (hlist, LVM_SETSUBITEM, item, (LPARAM) & subdata); return item;}#ifdef CUSTOM_DRAWstatic void my_draw_hdr_bk (HWND hWnd, HLVHDR hlvhdr, HDC hdc, RECT *rcDraw){ SetBrushColor (hdc, PIXEL_yellow); FillBox (hdc, rcDraw->left, rcDraw->top, RECTWP(rcDraw), RECTHP(rcDraw));}static void my_draw_hdr_item (HWND hWnd, int idx, HDC hdc, RECT *rcDraw){ Rectangle (hdc, rcDraw->left, rcDraw->top, rcDraw->right, rcDraw->bottom); SetBkMode (hdc, BM_TRANSPARENT); TextOut (hdc, rcDraw->left+4, rcDraw->top+4, caption[idx]);}#endifstatic void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data){ unsigned char buff [256] = {0}; if (id == IDC_CHARS && nc == EN_CHANGE) { GetWindowText (hwnd, buff, 4); SendMessage (hwnd, EM_SETCARETPOS, 0, 0); SendMessage (GetDlgItem (GetParent (hwnd), IDC_CHARS), MSG_CHAR, buff[0], 0L); }} static intScoreProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ HWND hListView; static PLOGFONT my_font; hListView = GetDlgItem (hDlg, IDC_CHARS); switch (message) { case MSG_INITDIALOG: { int i;// j; LVITEM item; LVCOLUMN lvcol; //GHANDLE hitem;#ifdef CUSTOM_DRAW LVCUSTOMDRAWFUNCS myfuncs = {my_draw_hdr_bk, my_draw_hdr_item}; SendMessage (hListView, LVM_SETCUSTOMDRAW, 0, (LPARAM) &myfuncs);#endif for (i = 0; i < COL_NR; i++) { lvcol.nCols = i; lvcol.pszHeadText = caption[i]; lvcol.width = 150; lvcol.pfnCompare = NULL; lvcol.colFlags = 0; SendMessage (hListView, LVM_ADDCOLUMN, 0, (LPARAM) &lvcol); } item.nItemHeight = 25; my_font = CreateLogFont (NULL, "fmhei", "utf-8", FONT_WEIGHT_REGULAR, FONT_SLANT_ROMAN, FONT_SETWIDTH_NORMAL, FONT_SPACING_CHARCELL, FONT_UNDERLINE_NONE, FONT_STRUCKOUT_NONE, 20, 0); SetNotificationCallback (hListView, my_notif_proc); SendMessage (hListView, EM_SETREADONLY,FALSE,0L); SendMessage (hListView, MSG_KEYDOWN, SCANCODE_INSERT, 0L); break; } case MSG_COMMAND: { int id = LOWORD (wParam); if (id == IDC_CTRL2) { float average = 0; char buff[20]; average = 2;//average / (SCORE_NUM * SUB_NUM); sprintf (buff, "%4.1f", average); SendDlgItemMessage (hDlg, IDC_CTRL1, MSG_SETTEXT, 0, (LPARAM)buff); } break; } case MSG_CLOSE: { EndDialog (hDlg, 0); break; } } return DefaultDialogProc (hDlg, message, wParam, lParam);}static CTRLDATA CtrlScore[] ={ { "button", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 360, 400, 100, 40, IDC_CTRL2,#ifdef _LANG_ZHCN "求总平均分",#else "amount",#endif 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 400, 100, 40, IDC_CTRL1, "", 0 }, { "listview", WS_BORDER | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_CENTER , 10, 10, 600, 380, IDC_CHARS, "score table", 0 },};static DLGTEMPLATE DlgScore ={ WS_BORDER | WS_CAPTION, WS_EX_NONE, 0, 0, 640, 480,#ifdef _LANG_ZHCN "求平均分",#else " CHIP company total prices machine",#endif 0, 0, 0, NULL, 0};int MiniGUIMain (int argc, const char* argv[]){#ifdef _MGRM_PROCESSES JoinLayer(NAME_DEF_LAYER , "listview" , 0 , 0);#endif if (!InitMiniGUIExt()) { return 2; } DlgScore.controls = CtrlScore; DlgScore.controlnr = TABLESIZE(CtrlScore); DialogBoxIndirectParam (&DlgScore, HWND_DESKTOP, ScoreProc, 0L); MiniGUIExtCleanUp (); return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -