📄 listview.c
字号:
/*** $Id: listview.c,v 1.3 2003/06/13 06:50:39 weiym Exp $**** listview.c: Sample program for MiniGUI Programming Guide** Usage of LISTVIEW control.**** Copyright (C) 2003 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>#include "inifile.h"#include "listview.h"#define IDC_LISTVIEW 10#define IDC_CTRL_EDIT 20#define IDC_CTRL_FIND 30#define IDC_CTRL_DEL 40#define IDC_CTRL_MODI 50#define IDC_CTRL_SAVE 60#define IDC_CTRL_MODI_OK 70#define IDC_CTRL_MODI_CANCLE 80#define IDC_CTRL_STATIC 90#define IDC_CTRL_ADD 100#define IDC_CTRL_STATIC_NAME 110#define IDC_CTRL_STATIC_TELE 120#define IDC_CTRL_STATIC_MOBILE 130#define IDC_CTRL_STATIC_EMAIL 140#define IDC_CTRL_STATIC_ADDR 150#define IDC_CTRL_STATIC_CORP 160#define IDC_CTRL_EDIT_NAME 170#define IDC_CTRL_EDIT_TELE 180#define IDC_CTRL_EDIT_MOBILE 190#define IDC_CTRL_EDIT_EMAIL 200#define IDC_CTRL_EDIT_ADDR 210#define IDC_CTRL_EDIT_CORP 220#define SUB_ITEM_NUM 6#define PERSON_NUM 4static char * caption [SUB_ITEM_NUM] ={ "姓名", "固定电话", "手机号","电子邮件","地址","公司"};typedef struct _CUST{ char *list[6];} CUSTOM; static CUSTOM info[PERSON_NUM] ={ {"张强", "85684458","13586874568","zhang@sina.com.cn","新华小区2号楼","太阳软件有限公司"}, {"王铮","45681247","13845672586","wang@163.com","保福寺南5号楼","IBM中国公司" }, {"黄亮", "78547825","13485691256","huang@gmail.com","农科院小区3号楼","微软亚洲研究院"}, {"秦天", "98564568","13765971245","qin@263.net","气象局小区8号楼","新开软件股份有限公司"}};static DLGTEMPLATE DlgModify ={ WS_BORDER | WS_CAPTION, WS_EX_NONE, 180, 180, 380, 270, "客户信息修改", 0, 0, 14, NULL, 0};struct _info { char list[6][100];} info1;/**********************************************以下定义了修改以及添加客户信息窗口的所有控件**此控件为修改和添加窗体所共有 **********************************************/static CTRLDATA CtrlModify[] ={ { "static", SS_SIMPLE | WS_VISIBLE | SS_CENTER, 30,20,120,25, IDC_CTRL_STATIC_NAME, "姓 名:", 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 150, 20, 180, 25, IDC_CTRL_EDIT_NAME, "", 0 }, { "static", SS_SIMPLE | WS_VISIBLE , 30,50,120,25, IDC_CTRL_STATIC_TELE, "固定电话:", 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 150, 50, 180, 25, IDC_CTRL_EDIT_TELE, "", 0 }, { "static", SS_SIMPLE | WS_VISIBLE , 30,80,120,25, IDC_CTRL_STATIC_MOBILE, "手 机:", 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 150, 80, 180, 25, IDC_CTRL_EDIT_MOBILE, "", 0 }, { "static", SS_SIMPLE | WS_VISIBLE , 30,110,120,25, IDC_CTRL_STATIC_EMAIL, "电子邮件:", 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 150, 110, 180, 25, IDC_CTRL_EDIT_EMAIL, "", 0 }, { "static", SS_SIMPLE | WS_VISIBLE , 30,140,120,25, IDC_CTRL_STATIC_ADDR, "住 址:", 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 150, 140, 180, 25, IDC_CTRL_EDIT_ADDR, "", 0 }, { "static", SS_SIMPLE | WS_VISIBLE , 30,170,120,25, IDC_CTRL_STATIC_CORP, "公 司:", 0 }, { "edit", WS_CHILD | WS_VISIBLE | WS_BORDER, 150, 170, 180, 25, IDC_CTRL_EDIT_CORP, "", 0 }, { "button", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 30,205,80,25, IDC_CTRL_MODI_OK, "确 定", 0 }, { "button", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 270,205,80,25, IDC_CTRL_MODI_CANCLE, "取 消", 0 }, };/*****************************************************************************以下为修改客户信息的窗口消息处理函数 *****************************************************************************/static int Modify_Proc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ struct _info * p = &info1; switch(message) { case MSG_INITDIALOG: { int i; SetWindowAdditionalData (hDlg,lParam); p = (struct _info *) GetWindowAdditionalData (hDlg); SetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_NAME),p->list[0]); SetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_TELE),p->list[1]); SetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_MOBILE),p->list[2]); SetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_EMAIL),p->list[3]); SetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_ADDR),p->list[4]); SetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_CORP),p->list[5]); } break; case MSG_CLOSE: { EndDialog(hDlg,0); } break; case MSG_COMMAND: { int id = LOWORD (wParam); int i; if(id == IDC_CTRL_MODI_CANCLE) { EndDialog(hDlg,0); } if(id == IDC_CTRL_MODI_OK) { GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_NAME),p->list[0],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_TELE),p->list[1],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_MOBILE),p->list[2],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_EMAIL),p->list[3],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_ADDR),p->list[4],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_CORP),p->list[5],100); EndDialog(hDlg,0); } } break; } return DefaultDialogProc (hDlg, message, wParam, lParam);}/**************************************************************************以下为添加客户信息窗口的消息处理函数 **************************************************************************/static int Add_Proc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ switch(message) { case MSG_INITDIALOG: { SetWindowAdditionalData (hDlg,lParam); } break; case MSG_COMMAND: { int i; int id = LOWORD (wParam); if(id == IDC_CTRL_MODI_OK) { for(i = 0;i < 6;i++ ) { memset(info1.list[i],0,100); } GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_NAME),info1.list[0],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_TELE),info1.list[1],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_MOBILE),info1.list[2],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_EMAIL),info1.list[3],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_ADDR),info1.list[4],100); GetWindowText(GetDlgItem(hDlg,IDC_CTRL_EDIT_CORP),info1.list[5],100); EndDialog(hDlg,wParam); } if(id == IDC_CTRL_MODI_CANCLE) { EndDialog(hDlg,0); } } break; case MSG_CLOSE: { EndDialog(hDlg,0); } } return DefaultDialogProc (hDlg, message, wParam, lParam);}/*****************************************************************************以下为主窗口的消息处理函数,因为程序较小,所以没有用其它函数进行模块化处理 *****************************************************************************/static int Custom_Proc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ HWND hListView; hListView = GetDlgItem (hDlg, IDC_LISTVIEW); switch (message) { case MSG_INITDIALOG: { int i, j,section_num; LVSUBITEM subdata; LVITEM item; LVCOLUMN lvcol; for(i = 1; i <= SUB_ITEM_NUM; i++) { lvcol.nCols = i; lvcol.pszHeadText = caption[i-1]; lvcol.width = 70+i*7;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -