📄 first.c
字号:
#include "first.h"#include "first_Info.c"static int s_pre_x,s_pre_y,s_release_x,s_release_y; static int s_symbol;static int s_x,s_y;static HMENU fn_Createmenufigure(void){ HMENU figure_hmenu; MENUITEMINFO figure_mii; memset(&figure_mii,0,sizeof(MENUITEMINFO)); figure_mii.type = MFT_STRING; figure_mii.id = 0; figure_mii.typedata= (DWORD)"Figure"; figure_hmenu = CreatePopupMenu(&figure_mii); memset(&figure_mii,0,sizeof(MENUITEMINFO)); figure_mii.type = MFT_STRING; figure_mii.state = 0; figure_mii.id = ID_LINE; figure_mii.typedata= (DWORD)"Line"; InsertMenuItem(figure_hmenu,0,TRUE,&figure_mii); memset(&figure_mii,0,sizeof(MENUITEMINFO)); figure_mii.type = MFT_STRING; figure_mii.state = 0; figure_mii.id = ID_ELLIPSE; figure_mii.typedata= (DWORD)"Circle"; InsertMenuItem(figure_hmenu,1,TRUE,&figure_mii); memset(&figure_mii,0,sizeof(MENUITEMINFO)); figure_mii.type = MFT_STRING; figure_mii.state = 0; figure_mii.id = ID_TRIANGLE; figure_mii.typedata= (DWORD)""; InsertMenuItem(figure_hmenu,2,TRUE,&figure_mii); memset(&figure_mii,0,sizeof(MENUITEMINFO)); figure_mii.type = MFT_STRING; figure_mii.state = 0; figure_mii.id = ID_RECTANGLE; figure_mii.typedata= (DWORD)"Rectangle"; InsertMenuItem(figure_hmenu,3,TRUE,&figure_mii); return figure_hmenu; }static HMENU fn_CreatemenuInfo(void){ HMENU info_menu; MENUITEMINFO info_mii; memset(&info_mii,0,sizeof(MENUITEMINFO)); info_mii.type = MFT_STRING; info_mii.state = 0; info_mii.typedata = (DWORD)"NewInfo"; info_menu = CreatePopupMenu(&info_mii); memset(&info_mii,0,sizeof(MENUITEMINFO)); info_mii.type = MFT_STRING; info_mii.state = 0; info_mii.id = ID_NEWINFO; info_mii.typedata = (DWORD)"NewInfo"; InsertMenuItem(info_menu,0,TRUE,&info_mii); memset(&info_mii,0,sizeof(MENUITEMINFO)); info_mii.type = MFT_STRING; info_mii.state = 0; info_mii.id = ID_DELINFO; info_mii.typedata = (DWORD)"DelInfo"; InsertMenuItem(info_menu,1,TRUE,&info_mii); memset(&info_mii,0,sizeof(MENUITEMINFO)); info_mii.type = MFT_STRING; info_mii.state = 0; info_mii.id =ID_SEARCHINFO; info_mii.typedata = (DWORD)"SearchInfo"; InsertMenuItem(info_menu,2,TRUE,&info_mii); return info_menu;}static HMENU fn_Createmenufileson(void){ HMENU filesonhmenu; MENUITEMINFO filesonmii; memset(&filesonmii,0,sizeof(MENUITEMINFO)); filesonmii.type = MFT_STRING; filesonmii.id = 0; filesonmii.typedata = (DWORD)"File"; filesonhmenu = CreatePopupMenu(&filesonmii); memset(&filesonmii,0,sizeof(MENUITEMINFO)); filesonmii.type = MFT_STRING; filesonmii.state = 0; filesonmii.id = ID_NEW; filesonmii.typedata = (DWORD)"New"; InsertMenuItem(filesonhmenu,0,TRUE,&filesonmii); memset(&filesonmii,0,sizeof(MENUITEMINFO)); filesonmii.type = MFT_STRING; filesonmii.state = 0; filesonmii.id = ID_EXIT; filesonmii.typedata = (DWORD)"Exit"; InsertMenuItem(filesonhmenu,1,TRUE,&filesonmii); return filesonhmenu;}static HMENU fn_Createmenufile(void){ HMENU filehmenu; MENUITEMINFO filemii; filehmenu = CreateMenu(); memset (&filemii,0,sizeof(MENUITEMINFO)); filemii.type = MFT_STRING; filemii.id = 100; filemii.typedata = (DWORD)"File"; filemii.hsubmenu = fn_Createmenufileson(); InsertMenuItem(filehmenu,0,TRUE,&filemii); memset(&filemii,0,sizeof(MENUITEMINFO)); filemii.type = MFT_STRING; filemii.id = 150; filemii.typedata = (DWORD)"Figure"; filemii.hsubmenu = fn_Createmenufigure(); InsertMenuItem(filehmenu,1,TRUE,&filemii); memset(&filemii,0,sizeof(MENUITEMINFO)); filemii.type = MFT_STRING; filemii.id = 160; filemii.typedata = (DWORD)"Info"; filemii.hsubmenu = fn_CreatemenuInfo(); InsertMenuItem(filehmenu,2,TRUE,&filemii); return filehmenu;}static int fn_FirstWinProc(HWND hWnd, int message,WPARAM wParam,LPARAM lParam){ HDC hdc; static BOOL s_bdraw; int rx,ry; int x = LOWORD(lParam); int y = HIWORD(lParam); switch (message) { case MSG_COMMAND: printf("menu___\n"); if (LOWORD(wParam) == ID_EXIT) { printf("You are using the Exit menu !\n"); DestroyAllControls(hWnd); DestroyMainWindow (hWnd); PostQuitMessage(hWnd); } else if(LOWORD(wParam) == ID_NEW) { printf("You are using the New menu !\n"); } else if (LOWORD(wParam) == ID_LINE) { s_symbol = 0; } else if(LOWORD(wParam) == ID_ELLIPSE) { s_symbol = 1; } else if (LOWORD(wParam) == ID_TRIANGLE) { s_symbol = 2; } else if (LOWORD(wParam) == ID_RECTANGLE) { s_symbol = 3; } else if (LOWORD(wParam) == ID_NEWINFO) { InitDialog (hWnd); } break; case MSG_PAINT: hdc = BeginPaint (hWnd); TextOut(hdc,20,20,"This Program is OK--Success!"); EndPaint(hWnd,hdc); return 0; case MSG_LBUTTONDOWN: SetCapture(hWnd); s_bdraw = TRUE; s_pre_x = LOWORD(lParam); s_pre_y = HIWORD(lParam); s_x = s_pre_x; s_y = s_pre_y; break; case MSG_LBUTTONUP:/* Only this time the final circle (or ellipse) finally defined*/ s_bdraw = FALSE; ReleaseCapture(); if(s_symbol == 1) { ScreenToClient(hWnd,&s_release_x,&s_release_y); /*exchange the x,y to the hWnd*/ hdc = GetClientDC(hWnd); /*get a client DC of the hWnd ,returns the handle of the DC.Should release after use */ SetPenColor(hdc,PIXEL_green); /*R,G,B color*/ rx = ABS(s_release_x - s_x);/*#define ABS ( x ) (((x)<0) ? -(x) : (x)) */ ry = ABS(s_release_y - s_y); if (ABS(rx - ry) <= 8) /*if ABS(rx - ry) <= 8 we draw the circle not the ellipse*/ Circle(hdc,s_x,s_y,rx); else Ellipse(hdc,s_x,s_y,rx,ry); ReleaseDC(hdc); } break; case MSG_MOUSEMOVE: switch (s_symbol) { case 0: if(s_bdraw) { ScreenToClient(hWnd,&x,&y); /*exchange the x,y to the hWnd*/ hdc = GetClientDC(hWnd); /*get a client DC of the hWnd ,returns the handle of the DC.Should release after use */ SetPenColor(hdc,PIXEL_red); /*R,G,B color*/ MoveTo (hdc,s_pre_x,s_pre_y); LineTo(hdc,x,y); ReleaseDC(hdc); s_pre_x = x; s_pre_y = y; } break; case 1: if (s_bdraw) { s_release_x = LOWORD(lParam); s_release_y = HIWORD(lParam); } break; case 2: SetPenColor(hdc,PIXEL_blue); /*R,G,B color*/ break; case 3: SetPenColor(hdc,PIXEL_yellow); /*R,G,B color*/ break; } break; case MSG_RBUTTONDOWN: printf("Use the right button to clear up the screen.\n"); InvalidateRect(hWnd,NULL,TRUE); break; case MSG_CLOSE: DestroyAllControls(hWnd); DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; case MSG_MINIMIZE: break; case MSG_MAXIMIZE: break; } return DefaultMainWinProc(hWnd,message,wParam,lParam);}int MiniGUIMain (int argc,const char* argv[]){ MAINWINCREATE CreateInfo; HWND hMainWnd; MSG Msg; #ifdef LITE_VERSION SetDesktopRect(0,0,800,600);#endif CreateInfo.dwStyle=WS_SYSMENU |WS_THICKFRAME | WS_VISIBLE | WS_CAPTION | WS_VSCROLL | WS_HSCROLL| WS_MINIMIZEBOX |WS_MAXIMIZEBOX; CreateInfo.spCaption = "Program of test for MiniGUI:"; CreateInfo.dwExStyle = WS_EX_NONE; CreateInfo.hMenu = fn_Createmenufile(); CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0; CreateInfo.MainWindowProc = fn_FirstWinProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 800; CreateInfo.by = 600; CreateInfo.iBkColor = COLOR_yellow; CreateInfo.dwAddData = 0; CreateInfo.hHosting = HWND_DESKTOP; hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) { return -1; } ShowWindow (hMainWnd, SW_SHOWNORMAL); while (GetMessage (&Msg,hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup (hMainWnd); return 0;} #ifndef LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -