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

📄 interface.c

📁 嵌入式拼音输入法(T9拼音)
💻 C
字号:
/***************************************************************************** 文件名:Hello.C* 功能:MiniGUI应用例子。*       创建一个主窗口,并在窗口中显示字符串"Hello World!   --ZLGMCU"。* 说明:使用MiniGUI for uC/OS-II,使用ADS 1.2编译器。****************************************************************************//* 包含MiniGUI的配置头文件(编译配置选项) */#include "MiniGUI_config.h"#include "string.h"#include "config.h"#include "stdlib.h"/* 包含MiniGUI头文件 */#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "control.h"extern   OS_EVENT *TEXTMbox;extern   OS_EVENT *PYMbox;extern   OS_EVENT *HZMbox;/* 主窗口起始位置及大小 */#define  MWINDOW_LX	10      /* 窗口左边框的x值 */#define  MWINDOW_TY	50      /* 窗口上边框的y值 */#define  MWINDOW_RX	230     /* 窗口右边框的x值 */#define  MWINDOW_BY	280     /* 窗口下边框的y值 */#define  IDC_SLOGIN	300#define  IDC_MLEDIT0 1000             /**************/#define  IDC_MLEDIT1 1001             /**************/#define  IDC_MLEDIT2 1002             /**************/#define  IDC_NUMBER  1003HWND hMainWnd;HWND DLGWND;// 定义对话框static  DLGTEMPLATE  MyDlg ={   WS_BORDER | WS_CAPTION,    WS_EX_NONE,    0, 0, 240, 320,    "ARM嵌入式--拼音输入法",     0,     0,    4,     NULL,    0    };// 定义对话框中的控件static CTRLDATA CtrlInitData[] = {      {        "mledit",        WS_VISIBLE|WS_BORDER|WS_VSCROLL|ES_BASELINE|ES_AUTOWRAP,        0,0,235,182,        IDC_MLEDIT0,         "",        0,        WS_EX_NONE   },   {        "mledit",        WS_VISIBLE|WS_BORDER|WS_VSCROLL|ES_BASELINE|ES_AUTOWRAP,        0,182,235,56,        IDC_MLEDIT1,         "",        0,        WS_EX_NONE   },   {        "edit",        WS_CHILD|WS_VISIBLE|WS_BORDER,        0,238,235,26,        IDC_MLEDIT2,         "",        WS_EX_NONE   },   {        "edit",        WS_CHILD|WS_VISIBLE|WS_BORDER,        0,264,235,30,        IDC_NUMBER,        "  1  2  3  4  5  6  7  8  9 ",        WS_EX_NONE   },   };static int  MyDlgProc(HWND hDlg, int message, WPARAM wParam, LPARAM lParam){ 	    switch(message)    {   case MSG_INITDIALOG:            DLGWND=hDlg;                    //获取对话框的句柄           return(1);	          case MSG_COMMAND:	   switch(LOWORD(wParam))	   {              case	MSG_CLOSE:            EndDialog(hDlg,wParam);            DestroyAllControls(hDlg);            DestroyMainWindowIndirect(hDlg);            PostQuitMessage(hDlg);           break;	       default:           	  break;	   }	   break;	default:           break;    }       return(DefaultDialogProc(hDlg, message, wParam, lParam));}static void  LoginBox(HWND hWnd){   MyDlg.controls = CtrlInitData;    DialogBoxIndirectParam(&MyDlg, hWnd, MyDlgProc, 0L);}/***************************************************************************** 名称:WinProc()* 功能:主窗口过程函数。*       处理MSG_PAINT消息,在窗口中显示hello_str字符串。* 入口参数:hWnd        窗口句柄*           message     消息*           wParam      消息附加参数1(对于不同的消息,有不同的用途)*           lParam      消息附加参数2(对于不同的消息,有不同的用途)* 出口参数:消息已处理则返回0。****************************************************************************/static int  WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){   HDC  hdc;   // 定义一个图形设备上下文对象,输出字符时需要。       switch(message)    {  case MSG_PAINT:	        hdc = BeginPaint(hWnd);         // 获得设备hdc	        	        TextOut(hdc, 25, 50, "ARM 嵌入式课程设计");// 可以使用TextOut函数在指定位置上显示字符串			TextOut(hdc, 25, 70, "----拼音输入法----");			TextOut(hdc, 25, 100, "     韩 叶 祥      ");			TextOut(hdc, 25, 150, "               进入=>");	        EndPaint(hWnd, hdc);                                // 释放设备hdc	        OSTimeDly(OS_TICKS_PER_SEC*3);                      // 延时5秒钟	        DestroyMainWindow(hWnd);			PostQuitMessage(hWnd);			LoginBox(HWND_DESKTOP);                             //加载拼音输入界面                            	                                           	        break;					case MSG_LBUTTONDOWN:			 DestroyMainWindow(hWnd);			 PostQuitMessage(hWnd);			 LoginBox(HWND_DESKTOP);                  //加载下一个窗口			 break;			 //进入操作界面			        case MSG_CLOSE:	        DestroyMainWindow(hWnd);        // 销毁主窗口	        PostQuitMessage(hWnd);          // 发送MSG_QUIT消息,通知"消息循环"结束	        break;       default:	        return(DefaultMainWinProc(hWnd, message, wParam, lParam));    }    return(0);}/***************************************************************************** 名称:InitMainWindow()* 功能:建立主窗口。* 入口参数:无* 出口参数:建立成功返回1,否则返回0。****************************************************************************/int InitMainWindow(void){   MAINWINCREATE  window_info;    window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;  // 窗口风格设置    window_info.dwExStyle = WS_EX_NONE;         // 不使用窗口扩展风格    window_info.spCaption = "ARM嵌入式课程设计";          // 窗口标题    window_info.hMenu = 0;                      // 无菜单    window_info.hCursor = GetSystemCursor(0);   // 设置窗口光标    window_info.hIcon = 0;                      // 无窗口图标    window_info.MainWindowProc = WinProc;       // 窗口过程函数    window_info.lx = MWINDOW_LX;                // 窗口的位置及大小设置    window_info.ty = MWINDOW_TY;    window_info.rx = MWINDOW_RX;    window_info.by = MWINDOW_BY;    window_info.iBkColor = COLOR_lightwhite;    // 窗口背景色    window_info.dwAddData = 0;    window_info.hHosting = HWND_DESKTOP;        // 托管窗口句柄        hMainWnd = CreateMainWindow(&window_info); // 建立主窗口    if(hMainWnd == HWND_INVALID) return(0);       else return(1);}/***************************************************************************** 名称:MiniGUIMain()* 功能:MiniGUI程序入口点。* 入口参数:argc    参数个数*           argv    参数字符串指针* 出口参数:返回0。****************************************************************************/int  MiniGUIMain(int argc, const char *argv[]){   MSG Msg;/* 虽然MiniGUI for uC/OS-II不支持"MiniGUI-Lite模式",   但为了保持代码的移植性,此段不要删除 */#ifdef _LITE_VERSION    SetDesktopRect(0,0, 800,600);#endif     InitMainWindow();       // 建立主窗口    ShowWindow(hMainWnd, SW_SHOWNORMAL);    // 显示主窗口    /* 消息循环 */ while(1) { while(GetMessage(&Msg, hMainWnd))     {       	TranslateMessage(&Msg);        DispatchMessage(&Msg);             } } MainWindowThreadCleanup(hMainWnd);        return(0);}/*****************************************************************************                             显示文本框任务****************************************************************************/void TEXTTask(void *pdata)                                {   static char *buff=NULL;    char  buff1[150];	INT8U err;    pdata=pdata;    while(1)    {           buff=OSMboxPend(TEXTMbox,0,&err);             //等待文本邮箱        GetWindowText(GetDlgItem(DLGWND,IDC_MLEDIT0),buff1,150);     //获取文本窗口当前所显示的内容        strcat(buff1,buff);                                        //把新输入的汉字插入到文本末        SendDlgItemMessage(DLGWND,IDC_MLEDIT0,MSG_SETTEXT,0,(LPARAM)buff1);  //发送到显示窗口        OSTimeDly(10);    }}/*****************************************************************************                              显示拼音任务****************************************************************************/void PYTask(void *pdata)                                  {   static  char *buff=NULL;	INT8U err;    pdata=pdata;    while(1)    {           buff=OSMboxPend(PYMbox,0,&err);             //等待拼音邮箱       SendDlgItemMessage(DLGWND,IDC_MLEDIT1,MSG_SETTEXT,0,(LPARAM)buff);  //发送到显示窗口       OSTimeDly(10);    }}/*****************************************************************************                              显示汉字任务****************************************************************************/void HZTask(void *pdata)                                  {   static char *buff=NULL;	INT8U err;    pdata=pdata;    while(1)    {        buff=OSMboxPend(HZMbox,0,&err);             //等待汉字邮箱        SendDlgItemMessage(DLGWND,IDC_MLEDIT2,MSG_SETTEXT,0,(LPARAM)buff);  //发送到显示窗口        OSTimeDly(10);    }}/* 定义桌面接口函数 */#ifndef _LITE_VERSION		#include "dti.c"#endif

⌨️ 快捷键说明

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