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

📄 monthcalendar.c

📁 minigui的日程表程序 与日历空间整合 程序很完善
💻 C
字号:
#include<stdio.h>#include<string.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 <sqlite3.h>#include "Richengbiao.h"#define IDC_MC                10000 #define IDC_INS               20000 #define IDC_DEL		     30000#define ID_STATIC  20001extern int rc;extern char *zErrMsg;extern char *sql;extern sqlite3 *db;int flag=0;char infobak[100];/* 对话框模板:只有两个控件:月历控件和“确定”按钮 */ static DLGTEMPLATE DlgTime =  {         WS_VISIBLE | WS_CAPTION | WS_BORDER ,         WS_EX_NONE,         0, 0, 320, 215,         "日程表",        0, 0,         4, NULL,         0 }; static CTRLDATA CtrlTime[]= {         {                 "monthcalendar",                 WS_CHILD | WS_VISIBLE | MCS_NOTIFY | MCS_ENG_S,                 4,0, 150, 140,                 IDC_MC,                 "",                 0         },       {                 "button",                 WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,                 50, 150, 50, 40,                 IDC_INS,                 "保存",                 0         },        {                 "button",                 WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,                 180, 150, 50, 40,                 IDC_DEL,                 "删除",                 0         },	{		CTRL_MLEDIT,		WS_VISIBLE | SS_CENTER | ES_BASELINE| ES_AUTOWRAP,		160,2,150,138,		ID_STATIC,		"",		0           	}};    static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data){		if (id == ID_STATIC && nc == EN_CHANGE) 		{								flag=1;				SYSTEMTIME date; 				SendMessage (GetDlgItem(GetParent(hwnd), IDC_MC), MCM_GETCURDATE, 0, (LPARAM)&date); 				strcpy(infobak,"");        sprintf (infobak, "%d/%d/%d", date.month ,date.day , date.year);        printf("infobak=%s\n",infobak); 		}}static int TimeWinProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam) { 		char sql[200];		    switch (message) {         case MSG_INITDIALOG:        SetNotificationCallback (GetDlgItem(hDlg, ID_STATIC), my_notif_proc);         break;          case MSG_COMMAND:         { 			        		//char *zErrMsg = 0;						int hang,lie;						char **Result;           	char info[100];            	           	SYSTEMTIME date;                 // 获取月历控件中的当前日期              SendMessage (GetDlgItem(hDlg, IDC_MC), MCM_GETCURDATE, 0, (LPARAM)&date);             sprintf (info, "%d/%d/%d", date.month ,date.day , date.year);             //printf("info=%s\n",info);                //获得文本信息                            int id = LOWORD(wParam); 						            if (id == IDC_MC)             {             		if(flag==1)            		{            				if(MessageBox(hDlg,"已经修改是否保存?","询问",MB_YESNO)==IDYES)            				{            							char text[256];                						//存储到数据库                					GetWindowText(GetDlgItem(hDlg, ID_STATIC),text,255);                					printf("%s\n",infobak);            						sprintf(sql,"insert into AGENA values('%s','%s');",infobak,text);                					int i=sqlite3_exec(db,sql,0,0,&zErrMsg);                					printf("%s\n",zErrMsg);                					if(i!=0)                					{                							sprintf(sql,"update  AGENDA set TEXT='%s' where DATA='%s';",text,infobak);                							sqlite3_exec(db,sql,0,0,&zErrMsg);                							printf("zErrMsg=%s\n",zErrMsg);                					}                					printf("%s\n",zErrMsg);                					flag=0;            				}            				else            					flag=0;            		}            		sprintf(sql,"select TEXT from AGENDA where DATA='%s';",info);            		sqlite3_get_table(db,sql,&Result,&hang,&lie,NULL);            		int i;								if(lie!=0)								    SetWindowText(GetDlgItem(hDlg, ID_STATIC),Result[1]);								else									SetWindowText(GetDlgItem(hDlg, ID_STATIC),"没有日程");                             }            if(id==IDC_INS)           	{           			                char text[256];                //存储到数据库                GetWindowText(GetDlgItem(hDlg, ID_STATIC),text,255);                sprintf(sql,"insert into AGENDA values('%s','%s');",info,text);                int i=sqlite3_exec(db,sql,0,0,&zErrMsg);                if(i!=0)                {                	sprintf(sql,"update  AGENDA set TEXT='%s' where DATA='%s';",text,info);                	sqlite3_exec(db,sql,0,0,&zErrMsg);                	printf("zErrMsg=%s\n",zErrMsg);                }                printf("%s\n",zErrMsg);                flag=0;           	}           	if(id==IDC_DEL)           	{           		char text[256];           		GetWindowText(GetDlgItem(hDlg, ID_STATIC),text,255);           		if(strcmp(text,"没有日程")==0)           			MessageBox(hDlg,"没有日程,无法删除。","错误",MB_OK);           		else if(MessageBox(hDlg,"确定要删除?","确认",MB_YESNO)==IDYES)           		{           			sprintf(sql,"delete from AGENDA where DATA='%s';",info);           			sqlite3_exec(db,sql,0,0,NULL);           			SetWindowText(GetDlgItem(hDlg, ID_STATIC),"没有日程");           		}           		//strcpy(info,infobak);	           	}          	        }                 break;   case MSG_CLOSE:         {         		//sqlite3_close(db);            EndDialog (hDlg, 0);         }         return 0;     }  		    return DefaultDialogProc (hDlg, message, wParam, lParam); } int  monthcalendar(HWND hWnd){  if(!InitMiniGUIExt()){		return 2;		}	//printf("%s\n",zErrMsg);	    DlgTime.controls = CtrlTime;    //创建日历对话框    DialogBoxIndirectParam (&DlgTime, hWnd, TimeWinProc, 0L);	 MiniGUIExtCleanUp ();		 return 0;   }

⌨️ 快捷键说明

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