📄 desktop.c
字号:
/***************************************************************************** 文件名:desktop.c* 功能:MiniGUI应用例子。* 创建一个无边框和标题的桌面窗口,然后在桌面上显示6个图标按钮,* 使用按键进行选择操作。****************************************************************************//* 包含MiniGUI的配置头文件(编译配置选项) */#include "MiniGUI_config.h"#include "stdlib.h"/* 包含MiniGUI头文件 */#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "control.h"#define POSSIZE 86,103,49,101/* 主窗口起始位置及大小 */#define MWINDOW_LX 0 /* 窗口左边框的x值 */#define MWINDOW_TY 0 /* 窗口上边框的y值 */#define MWINDOW_RX 239 /* 窗口右边框的x值 */#define MWINDOW_BY 319 /* 窗口下边框的y值 *//* 包含各图片资源文件 */#include "11.c"#include "12.c"#include "13.c"#include "14.c"#include "15.c"#include "16.c"#include "21.c"#include "22.c"#include "23.c"#include "24.c"#include "25.c"#include "26.c"#include "31.c"#include "32.c"#include "33.c"#include "34.c"#include "35.c"#include "36.c"#include "41.c"#include "42.c"#include "43.c"#include "44.c"#include "45.c"#include "46.c"#include "51.c"#include "52.c"#include "53.c"#include "54.c"#include "55.c"#include "56.c"#include "61.c"#include "62.c"#include "63.c"#include "64.c"#include "65.c"#include "66.c"#include "start.c"HWND hMainWnd; // 主窗口句柄/***************************************************************************** 名称:WinProc()* 功能:主窗口过程函数。* 处理MSG_PAINT消息,在窗口中显示6个图标。* 处理MSG_CHAR消息,进行图标菜单选择操作。* 入口参数:hWnd 窗口句柄* message 消息* wParam 消息附加参数1(对于不同的消息,有不同的用途)* lParam 消息附加参数2(对于不同的消息,有不同的用途)* 出口参数:消息已处理则返回0。****************************************************************************/static int WinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ static BITMAP s_startbmp; static BITMAP s_bmp[36]; static PLOGFONT s_font, s_font1; int n=0; int i; int j=0; int j1=0; HDC hdc; // 定义一个图形设备上下文对象,输出字符时需要。 switch(message) { case MSG_CREATE: // 装载图片资源 LoadBitmapFromMem(HDC_SCREEN, &s_startbmp, start_data, start_no, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[0], no11_data, sz_no11, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[1], no12_data, sz_no12, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[2], no13_data, sz_no13, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[3], no14_data, sz_no14, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[4], no15_data, sz_no15, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[5], no16_data, sz_no16, "bmp"); /********************************************************************/ LoadBitmapFromMem(HDC_SCREEN, &s_bmp[6], no21_data, sz_no21, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[7], no22_data, sz_no22, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[8], no23_data, sz_no23, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[9], no24_data, sz_no24, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[10], no25_data, sz_no25, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[11], no26_data, sz_no26, "bmp"); /********************************************************************/ LoadBitmapFromMem(HDC_SCREEN, &s_bmp[12], no31_data, sz_no31, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[13], no32_data, sz_no32, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[14], no33_data, sz_no33, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[15], no34_data, sz_no34, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[16], no35_data, sz_no35, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[17], no36_data, sz_no36, "bmp"); /********************************************************************/ LoadBitmapFromMem(HDC_SCREEN, &s_bmp[18], no41_data, sz_no41, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[19], no42_data, sz_no42, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[20], no43_data, sz_no43, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[21], no44_data, sz_no44, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[22], no45_data, sz_no45, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[23], no46_data, sz_no46, "bmp"); /********************************************************************/ LoadBitmapFromMem(HDC_SCREEN, &s_bmp[24], no51_data, sz_no51, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[25], no52_data, sz_no52, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[26], no53_data, sz_no53, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[27], no54_data, sz_no54, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[28], no55_data, sz_no55, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[29], no56_data, sz_no56, "bmp"); /********************************************************************/ LoadBitmapFromMem(HDC_SCREEN, &s_bmp[30], no61_data, sz_no61, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[31], no62_data, sz_no62, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[32], no63_data, sz_no63, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[33], no64_data, sz_no64, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[34], no65_data, sz_no65, "bmp"); LoadBitmapFromMem(HDC_SCREEN, &s_bmp[35], no66_data, sz_no66, "bmp"); break; case MSG_PAINT: hdc = BeginPaint(hWnd); // 获得设备hdc FillBoxWithBitmap(hdc, 0, 0, 242, 318, &s_startbmp); FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[0]); EndPaint(hWnd, hdc); // 释放设备hdc break; case MSG_CHAR: n=rand()%36+1; hdc = BeginPaint(hWnd); // 获得设备hdc for( i=0;i<10;i++) { j=rand()%36; while(j==j1) { j=rand()%36; } FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[j]); j1=j; } switch(n) { case 1: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[0]); break; case 2: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[1]); break; case 3: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[2]); break; case 4: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[3]); break; case 5: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[4]); break; case 6: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[5]); break; case 7: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[6]); break; case 8: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[7]); break; case 9: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[8]); break; case 10: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[9]); break; case 11: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[10]); break; case 12: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[11]); break; case 13: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[12]); break; case 14: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[13]); break; case 15: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[14]); break; case 16: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[15]); break; case 17: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[16]); break; case 18: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[17]); break; case 19: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[18]); break; case 20: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[19]); break; case 21: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[20]); break; case 22: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[21]); break; case 23: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[22]); break; case 24: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[23]); break; case 25: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[24]); break; case 26: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[25]); break; case 27: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[26]); break; case 28: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[27]); break; case 29: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[28]); break; case 30: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[29]); break; case 31: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[30]); break; case 32: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[31]); break; case 33: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[32]); break; case 34: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[33]); break; case 35: FillBoxWithBitmap(hdc,POSSIZE, &s_bmp[34]); break; case 36: FillBoxWithBitmap(hdc, POSSIZE, &s_bmp[35]); break; default: break; } EndPaint(hWnd, hdc); // 释放设备hdc break; case MSG_CLOSE: UnloadBitmap(&s_startbmp); for(i=0; i<36; i++) UnloadBitmap(&s_bmp[i]); DestroyLogFont(s_font); DestroyLogFont(s_font1); 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; window_info.dwExStyle = WS_EX_NONE; window_info.spCaption = ""; 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_lightgray; 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;#ifdef _LITE_VERSION SetDesktopRect(0,0, 800,600);#endif InitMainWindow(); // 建立主窗口 ShowWindow(hMainWnd, SW_SHOWNORMAL); // 显示主窗口 /* 消息循环 */ while(GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup(hMainWnd); return(0);}/* 定义桌面接口函数 */#ifndef _LITE_VERSION #include "dti.c"#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -