📄 monthcalendar.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 + -