📄 optiondialog.cpp
字号:
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <sys/time.h>#include <pthread.h>#include <semaphore.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <pwd.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include "../include/typedef.h"#include "main.h"#include "optiondialog.h"#define IDC_HOMEPAGE 3100#define IDC_PAGETOADD 3110#define IDC_ADD 3120#define IDC_PAGETODEL 3130#define IDC_DEL 3140///////////////////#define IDM_EXIT 4000#define IDM_DIALOG1 4001///////////////////extern MainWndAttr MainWndAttrib;DLGTEMPLATE DlgInputOption = { WS_BORDER | WS_CAPTION, WS_EX_IMECOMPOSE, 10, 10, 350, 170, "Intenet 选项", 0, 0, 9, NULL, 0};CTRLDATA CtrlInputOption [] = { { "static", WS_VISIBLE | SS_SIMPLE, 5, 5, 80, 15, IDC_STATIC, "缺省地址:", 0 }, { "edit", WS_VISIBLE | WS_BORDER | WS_TABSTOP, 5, 20, 155, 20, IDC_HOMEPAGE, NULL, 0 }, { "static", WS_VISIBLE | SS_SIMPLE, 5, 50, 85, 20, IDC_STATIC, "添加到收藏夹:", 0 }, { "edit", WS_VISIBLE | WS_BORDER | WS_TABSTOP, 5, 70, 155, 20, IDC_PAGETOADD, NULL, 0 }, { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 163, 55, 17, 20, IDC_ADD, ">", 0 }, { "listbox", WS_VISIBLE | WS_BORDER | WS_VSCROLL, 185, 5, 155, 135, IDC_PAGETODEL, NULL, 0 }, { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 163, 80, 17, 20, IDC_DEL, "x", 0 }, { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 30, 115, 45, 20, IDOK, "确定", 0 }, { "button", WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 95, 115, 45, 20, IDCANCEL, "取消", 0 }}; int DialogInputOptionProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ static int pageNr = 0; char homepage[MAX_PATH + 1]; char strConfFile[MAX_PATH + 1]; char strSiteNum[15]; int curSel, strlength; int i; switch (message) { case MSG_INITDIALOG: strncpy (strConfFile, getpwuid(getuid())->pw_dir, MAX_PATH); // read from configure file if (strConfFile[strlen(strConfFile) - 1] != '/') strncat(strConfFile, "/", MAX_PATH); strncat (strConfFile, ".", MAX_PATH); strncat (strConfFile, CONF_FILENAME, MAX_PATH); SetDlgItemText(hDlg, IDC_HOMEPAGE, MainWndAttrib.strHomePage); if(GetIntValueFromEtcFile(strConfFile, "favorate", "favoratenum", &pageNr) != ETC_OK) { pageNr = 0; } if (pageNr > FAVORATE_NUMBER) pageNr = FAVORATE_NUMBER; for(i = 0; i < pageNr; i++) { SendMessage (GetDlgItem(hDlg,IDC_PAGETODEL), LB_ADDSTRING, 0, (LPARAM)MainWndAttrib.strGlobalMenu[i]); } return 1; case MSG_COMMAND: switch (wParam) { case IDOK: GetDlgItemText(hDlg, IDC_HOMEPAGE, homepage, MAX_PATH); if(strlen(homepage) != 0) { free(MainWndAttrib.strHomePage); MainWndAttrib.strHomePage = (char *)malloc(strlen(homepage) + 1); memcpy(MainWndAttrib.strHomePage, homepage, strlen(homepage)); MainWndAttrib.strHomePage[strlen(homepage)] = '\0'; } strncpy (strConfFile, getpwuid(getuid())->pw_dir, MAX_PATH); // read from configure file if (strConfFile[strlen(strConfFile) - 1] != '/') strncat(strConfFile, "/", MAX_PATH); strncat (strConfFile, ".", MAX_PATH); strncat (strConfFile, CONF_FILENAME, MAX_PATH); for (i = 0; i < pageNr; i ++) { memset (strSiteNum, 0, 15); sprintf(strSiteNum, "favorate%d", i+1); SetValueToEtcFile(strConfFile, "favorate", strSiteNum, MainWndAttrib.strGlobalMenu[i]); } sprintf(strSiteNum, "%d", pageNr); SetValueToEtcFile(strConfFile, "favorate", "favoratenum", strSiteNum); SetValueToEtcFile(strConfFile, "homepage", "homepage", MainWndAttrib.strHomePage); EndDialog(hDlg,1); break; case IDCANCEL: EndDialog(hDlg, 0); break; case IDC_ADD: GetDlgItemText(hDlg, IDC_PAGETOADD, homepage, MAX_PATH); if (homepage[0] == 0) { MessageBox(hDlg, "Please enter pagename first!", "Error", MB_OK); break; } if (pageNr == FAVORATE_NUMBER) { MessageBox(hDlg, "Too many pages!", "Error", MB_OK); break; } SendMessage (GetDlgItem(hDlg, IDC_PAGETODEL), LB_ADDSTRING, 0, (LPARAM)homepage); strlength = strlen(homepage); MainWndAttrib.strGlobalMenu[pageNr] = (char *)malloc(strlength + 1); memcpy(MainWndAttrib.strGlobalMenu[pageNr], homepage, strlength); MainWndAttrib.strGlobalMenu[pageNr][strlength] = '\0'; pageNr++; homepage[0] = 0; SetDlgItemText(hDlg, IDC_PAGETOADD, homepage); break; case IDC_DEL: curSel = SendMessage (GetDlgItem(hDlg,IDC_PAGETODEL ), LB_GETCURSEL, 0, 0); if (curSel >= 0) { if (MessageBox (hDlg, "Are you sure to delete this item?", "Page to delete", MB_YESNOCANCEL | MB_ICONQUESTION) == IDYES) { SendMessage (GetDlgItem(hDlg,IDC_PAGETODEL), LB_DELETESTRING, curSel, 0); free(MainWndAttrib.strGlobalMenu[curSel]); MainWndAttrib.strGlobalMenu[curSel] = (char *)malloc( strlen(MainWndAttrib.strGlobalMenu[pageNr - 1] + 1)); memcpy(MainWndAttrib.strGlobalMenu[curSel], MainWndAttrib.strGlobalMenu[pageNr - 1], strlen(MainWndAttrib.strGlobalMenu[pageNr - 1])); MainWndAttrib.strGlobalMenu[curSel][strlen(MainWndAttrib.strGlobalMenu[pageNr - 1])] = '\0'; free(MainWndAttrib.strGlobalMenu[pageNr - 1]); pageNr--; } } else { MessageBox(hDlg, "select one page first!", "Error", MB_OK); break; } break; } } return DefaultDialogProc (hDlg, message, wParam, lParam);}////////////////////////////////////////////////////////////////////////HMENU createpmenudialogs (){ HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"Dialogs"; hmnu = CreatePopupMenu (&mii); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_DIALOG1; mii.typedata = (DWORD)"Dialog1..."; InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_EXIT; mii.typedata = (DWORD)"Exit..."; InsertMenuItem(hmnu, 1, TRUE, &mii); return hmnu;}void testDialogBox1 (HWND hWnd){ DlgInputOption.controls = CtrlInputOption; DialogBoxIndirectParam (&DlgInputOption, hWnd, DialogInputOptionProc, 0L);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -