📄 recog.c
字号:
#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <semaphore.h>#include <popt.h>#include <unistd.h>#include <sys/wait.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mywindows.h>#include <minigui/mgext.h>#include <minigui/vcongui.h>#include <minigui/filedlg.h>#define IDC_SPEECH 101#define IDC_KEYBORD 102 #define IDC_QUIET 103 #define IDC_NOISY 104#define IDC_PROMPT 105#define IDC_SURE_ON 106#define IDC_SURE_OFF 107#define IDC_CLOSE_ON 108#define IDC_CLOSE_OFF 109#define IDC_SURE_TIMER 110#define IDC_CLOSE_TIMER 111static HWND sure_on;static HWND sure_off;static BITMAP bmp1,bmp2,bmp3,bmp4,bmp5,bmp6,bmp7,bmp8,bmp9,bmp10;static const char* filename = "./res/new.gif";int ret;static ANIMATION* anim = NULL;#define IDC_STATIC1 186#define IDC_STATIC2 187/**选择模式对话框**/static DLGTEMPLATE DlgMode ={ WS_BORDER | WS_CAPTION, //WS_EX_TOPMOST, WS_EX_NOCLOSEBOX, 0, 0, 240, 320, "请您选择需要的工作模式", 0, 0, 7, NULL, 0};static CTRLDATA CtrlMode[] ={ { "static", WS_VISIBLE | SS_GROUPBOX, 10, 105, 110, 80, IDC_STATIC1, "可选模式", 0 }, { "button", WS_VISIBLE | BS_AUTORADIOBUTTON | BS_CHECKED | WS_TABSTOP | WS_GROUP, 20, 133, 98, 20, IDC_SPEECH, "话筒输入", 0 }, { "button", WS_VISIBLE | BS_AUTORADIOBUTTON ,//| BS_NOTIFY, 20, 159, 98, 20, IDC_KEYBORD, "键盘输入", 0 }, { "static", WS_VISIBLE | SS_GROUPBOX | WS_GROUP, 150, 105, 78, 80, IDC_STATIC2, "环境", 0 }, { "button", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX| BS_CHECKED| WS_DISABLED, //WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 160, 133, 68, 20, IDC_QUIET, "安静", 0 }, { "button", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | WS_DISABLED,//| BS_CHECKED, //| WS_DISABLED, //WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, 160, 159, 68, 20, IDC_NOISY, "嘈杂", 0 }, { "static", WS_VISIBLE | SS_CENTER | WS_GROUP, 10, 197, 220, 20, IDC_PROMPT, "采用话筒输入话音识别", 0 }, };static char* prompts [] = { "采用话筒输入话音识别", "请您使用键盘输入!",};static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data){ if (nc == BN_CLICKED) { SetWindowText (GetDlgItem (GetParent (hwnd), IDC_PROMPT), prompts [id - IDC_SPEECH]); }}static void my_mode_proc (HWND hwnd, int id, int nc, DWORD add_data){ int j; HWND hDlg; if(nc == BN_CLICKED) { j=SendMessage(GetDlgItem(hDlg,IDC_KEYBORD),BM_GETCHECK,0,0); if(j==BST_CHECKED) SendMessage(GetDlgItem(hDlg,IDC_KEYBORD),BM_SETCHECK,BST_PUSHED,0); }}static void usage (void){ MessageBox (HWND_DESKTOP, "\nUsage: vcongui [--row <rows>] [--col <columns>]" " [<prog> [<options>]]\n\n" " <rows> is the rows of terminal, \n" " <columns> is the columns of terminal.\n" " <prog> is the startup program and\n" " <options> are the options of the program.\n\n", "Bad arguments!", MB_OK | MB_ICONEXCLAMATION);}static int ModeProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ int i,id,nc; int back;#ifdef _LITE_VERSION CHILDINFO ChildInfo = {0, NULL, NULL, NULL, NULL, 1, 0, 0, 0, 0};#else CHILDINFO ChildInfo = {0, NULL, NULL, NULL, NULL, 1, 0, 0, 0, 0};#endif poptContext optCon; int rc; struct poptOption options[] = { { "row", '\0', POPT_ARG_INT, &ChildInfo.rows, 0 }, { "col", '\0', POPT_ARG_INT, &ChildInfo.cols, 0 }, {0, 0, 0, 0, 0} }; switch (message) { case MSG_ERASEBKGND: SetWindowBkColor(hDlg,RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_STATIC1),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_SPEECH),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_KEYBORD),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_STATIC2),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_QUIET),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_NOISY),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_PROMPT),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowBkColor(GetDlgItem(hDlg,IDC_QUIET),RGB2Pixel (HDC_SCREEN, 97,172,205)); SetWindowElementColorEx(GetDlgItem(hDlg,IDC_SPEECH), WED_3DBOX_REVERSE,RGB2Pixel (HDC_SCREEN, 255,255,0)); SetWindowElementColorEx(GetDlgItem(hDlg,IDC_STATIC1), FGC_CONTROL_NORMAL,RGB2Pixel (HDC_SCREEN, 255,255,0)); //SetWindowElementColorEx(GetDlgItem(hDlg,IDC_SPEECH), WED_3DBOX_REVERSE,RGB2Pixel (HDC_SCREEN, 88,233,225)); //SetWindowElementColorEx(GetDlgItem(hDlg,IDC_STATIC1), FGC_CONTROL_NORMAL,RGB2Pixel (HDC_SCREEN, 88,233,225)); break; case MSG_CREATE: { anim = CreateAnimationFromGIF89aFile (HDC_SCREEN, filename); if (anim == NULL) return 1; SetWindowAdditionalData (hDlg, (DWORD) anim); CreateWindowEx (CTRL_ANIMATION, "", WS_VISIBLE | ANS_AUTOLOOP | ANS_SCALED,//ANS_FITTOANI, WS_EX_TRANSPARENT, 200, 10, 12, 220, 80, hDlg, (DWORD)anim); SendMessage (GetDlgItem (hDlg, 200), ANM_SETANIMATION, 0, (LPARAM)anim); SendMessage (GetDlgItem (hDlg, 200), ANM_STARTPLAY, 0, 0); LoadBitmapFromFile(HDC_SCREEN, &bmp1, "./res/sure_on.png"); sure_on= CreateWindowEx (CTRL_STATIC, "", WS_CHILD | WS_VISIBLE | SS_BITMAP|SS_NOTIFY, WS_EX_TRANSPARENT, IDC_SURE_ON, 13, 240, 95, 40, hDlg, (DWORD)&bmp1); LoadBitmapFromFile(HDC_SCREEN, &bmp10, "./res/sure_off.png"); sure_off= CreateWindowEx (CTRL_STATIC, "", WS_CHILD | WS_VISIBLE | SS_BITMAP, WS_EX_TRANSPARENT, IDC_SURE_OFF, 13, 240, 95, 40, hDlg, (DWORD)&bmp10); ShowWindow(sure_off,SW_HIDE); ShowWindow(sure_on,SW_SHOW); LoadBitmapFromFile(HDC_SCREEN, &bmp2, "./res/close_on.png"); CreateWindowEx (CTRL_STATIC, "", WS_CHILD | WS_VISIBLE | SS_BITMAP|SS_NOTIFY, WS_EX_TRANSPARENT, IDC_CLOSE_ON, 128, 240, 95, 40, hDlg, (DWORD)&bmp2); } break; /*case MSG_TIMER: ShowWindow(sure_off,SW_HIDE); ShowWindow(sure_on,SW_SHOW); KillTimer (hDlg, IDC_SURE_TIMER); break;*/ case MSG_INITDIALOG: { SetNotificationCallback (GetDlgItem (hDlg, IDC_QUIET), my_mode_proc); SetNotificationCallback (GetDlgItem (hDlg, IDC_NOISY), my_mode_proc); InvalidateRect((GetDlgItem(hDlg,IDC_NOISY)), NULL, FALSE); //int i; for (i = IDC_SPEECH; i <= IDC_KEYBORD; i++) SetNotificationCallback (GetDlgItem (hDlg, i), my_notif_proc); } return 1; case IDC_KEYBORD: EnableWindow((GetDlgItem(hDlg,IDC_QUIET)),FALSE); EnableWindow((GetDlgItem(hDlg,IDC_NOISY)),FALSE); break; case MSG_COMMAND: { id=LOWORD(wParam); nc=HIWORD(wParam); if(id==IDC_SURE_ON&&nc==STN_CLICKED) { ShowWindow(sure_on,SW_HIDE); ShowWindow(sure_off,SW_SHOW); back=SendMessage(GetDlgItem(hDlg,IDC_KEYBORD),BM_GETCHECK,0,0); if(back==BST_CHECKED) { VCOnMiniGUI (&ChildInfo); break;} else back=SendMessage(GetDlgItem(hDlg,IDC_SPEECH),BM_GETCHECK,0,0); if(back==BST_CHECKED) DestroyAnimation ((ANIMATION*)GetWindowAdditionalData (hDlg), TRUE); DestroyAllControls (hDlg); } else if(id==IDC_CLOSE_ON&&nc==STN_CLICKED) DestroyAnimation ((ANIMATION*)GetWindowAdditionalData (hDlg), TRUE); DestroyAllControls (hDlg); EndDialog (hDlg, wParam); break; } break; case MSG_DESTROY: { DestroyAllControls(hDlg); } return 0; } return DefaultDialogProc (hDlg, message, wParam, lParam); }int MiniGUIMain (int argc, const char* argv[]){#ifdef _LITE_VERSION SetDesktopRect(0, 0, 1024, 768);#endif if (!InitMiniGUIExt()) { } DlgMode.controls = CtrlMode; DialogBoxIndirectParam (&DlgMode, HWND_DESKTOP, ModeProc, 0L); MiniGUIExtCleanUp ();}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -