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