📄 main.c
字号:
// $Id: main.c,v 1.6 2002/07/28 04:28:10 ymwei Exp $//// All control test programs//// Copyright (c) 2001, Wei Yongming (ymwei@minigui.org)//// Create date: 2001/11/01/*** This source is free software; you can redistribute it and/or** modify it under the terms of the GNU General Public** License as published by the Free Software Foundation; either** version 2 of the License, or (at your option) any later version.**** This software is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU** General Public License for more details.**** You should have received a copy of the GNU General Public** License along with this library; if not, write to the Free** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,** MA 02111-1307, USA*///// Modify records://// Who When Where For What Status//-----------------------------------------------------------------------------//// TODO://#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <signal.h>#include <time.h>#include <sys/types.h>#include <sys/wait.h>#include <math.h>#include <minigui/common.h>#include <minigui/minigui.h>#include <minigui/gdi.h>#include <minigui/window.h>#include <minigui/control.h>#include <minigui/mgext.h>#include "ctrls.h"#include "resource.h"#define DEFAULT_WIDTH 800#define DEFAULT_HEIGHT 600static HMENU createpmenuabout (void){ HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"About..."; hmnu = CreatePopupMenu (&mii); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_ABOUT_THIS; mii.typedata = (DWORD)"About MiniGUI Controls..."; InsertMenuItem(hmnu, 0, TRUE, &mii); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING ; mii.state = 0; mii.id = IDM_ABOUT; mii.typedata = (DWORD)"About MiniGUI..."; InsertMenuItem(hmnu, 1, TRUE, &mii); return hmnu;}static HMENU createpmenufile (void){ HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"File"; hmnu = CreatePopupMenu (&mii); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_NEW; mii.typedata = (DWORD)"New"; InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_OPEN; mii.typedata = (DWORD)"Open..."; InsertMenuItem(hmnu, 1, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_SAVE; mii.typedata = (DWORD)"Save"; InsertMenuItem(hmnu, 2, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_SAVEAS; mii.typedata = (DWORD)"Save As..."; InsertMenuItem(hmnu, 3, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_CLOSE; mii.typedata = (DWORD)"Close"; InsertMenuItem(hmnu, 4, TRUE, &mii); mii.type = MFT_SEPARATOR; mii.state = 0; mii.id = 0; mii.typedata = 0; InsertMenuItem(hmnu, 5, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_EXIT; mii.typedata = (DWORD)"Exit"; InsertMenuItem(hmnu, 6, TRUE, &mii); return hmnu;}static HMENU createpmenuobject (void){ HMENU hmnu; MENUITEMINFO mii; memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 0; mii.typedata = (DWORD)"Controls"; hmnu = CreatePopupMenu (&mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_STATIC; mii.typedata = (DWORD)"Static control"; InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_BUTTON; mii.typedata = (DWORD)"Button control"; InsertMenuItem(hmnu, 1, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_MENUBUTTON; mii.typedata = (DWORD)"MenuButton control"; InsertMenuItem(hmnu, 2, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_EDIT; mii.typedata = (DWORD)"Edit control"; InsertMenuItem(hmnu, 3, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_LISTBOX; mii.typedata = (DWORD)"ListBox control"; InsertMenuItem(hmnu, 4, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_PROGRESSBAR; mii.typedata = (DWORD)"ProgressBar control"; InsertMenuItem(hmnu, 5, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_COMBOBOX; mii.typedata = (DWORD)"ComboBox control"; InsertMenuItem(hmnu, 6, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_TOOLBAR; mii.typedata = (DWORD)"ToolBar control"; InsertMenuItem(hmnu, 7, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_TRACKBAR; mii.typedata = (DWORD)"TrackBar control"; InsertMenuItem(hmnu, 8, TRUE, &mii); mii.type = MFT_SEPARATOR; mii.state = 0; mii.id = 0; mii.typedata = 0; InsertMenuItem(hmnu, 9, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_LISTVIEW; mii.typedata = (DWORD)"ListView control"; InsertMenuItem(hmnu, 10, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_TREEVIEW; mii.typedata = (DWORD)"TreeView control"; InsertMenuItem(hmnu, 11, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_MONTHCALENDAR; mii.typedata = (DWORD)"MonthCalendar control"; InsertMenuItem(hmnu, 12, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_SPINBOX; mii.typedata = (DWORD)"SpinBox control"; InsertMenuItem(hmnu, 13, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_COOLBAR; mii.typedata = (DWORD)"CoolBar control"; InsertMenuItem(hmnu, 14, TRUE, &mii); mii.type = MFT_SEPARATOR; mii.state = 0; mii.id = 0; mii.typedata = 0; InsertMenuItem(hmnu, 15, TRUE, &mii); mii.type = MFT_STRING; mii.state = 0; mii.id = IDM_SUBCLASS; mii.typedata = (DWORD)"Control Subclass"; InsertMenuItem(hmnu, 16, TRUE, &mii); return hmnu;}static HMENU createmenu (void){ HMENU hmnu; MENUITEMINFO mii; hmnu = CreateMenu(); memset (&mii, 0, sizeof(MENUITEMINFO)); mii.type = MFT_STRING; mii.id = 100; mii.typedata = (DWORD)"File"; mii.hsubmenu = createpmenufile (); InsertMenuItem(hmnu, 0, TRUE, &mii); mii.type = MFT_STRING; mii.id = 110; mii.typedata = (DWORD)"Controls"; mii.hsubmenu = createpmenuobject (); InsertMenuItem(hmnu, 2, TRUE, &mii); mii.type = MFT_STRING; mii.id = 120; mii.typedata = (DWORD)"About"; mii.hsubmenu = createpmenuabout (); InsertMenuItem(hmnu, 3, TRUE, &mii); return hmnu;}static int CtrlTestWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){ HDC hdc; switch (message) { case MSG_PAINT: hdc = BeginPaint (hWnd); TabbedTextOut (hdc, 0, 0, "\nPlease choose a command from menu..."); EndPaint (hWnd, hdc); break; case MSG_COMMAND: switch (wParam) { case IDM_NEW: case IDM_OPEN: case IDM_SAVE: case IDM_SAVEAS: break; case IDM_CLOSE: case IDM_EXIT: SendMessage (hWnd, MSG_CLOSE, 0, 0L); break; case IDM_STATIC: static_demo (hWnd); break; case IDM_BUTTON: button_demo (hWnd); break; case IDM_MENUBUTTON: menubutton_demo (hWnd); break; case IDM_EDIT: edit_demo (hWnd); break; case IDM_LISTBOX: listbox_demo (hWnd); break; case IDM_PROGRESSBAR: progressbar_demo (hWnd); break; case IDM_COMBOBOX: combobox_demo (hWnd); break; case IDM_TOOLBAR: toolbar_demo (hWnd); break; case IDM_TRACKBAR: trackbar_demo (hWnd); break; case IDM_LISTVIEW: listview_demo (hWnd); break; case IDM_TREEVIEW: treeview_demo (hWnd); break; case IDM_MONTHCALENDAR: monthcalendar_demo (hWnd); break; case IDM_SPINBOX: spinbox_demo (hWnd); break; case IDM_COOLBAR: coolbar_demo (hWnd); break; case IDM_SUBCLASS: subclass_demo (hWnd); break; case IDM_ABOUT_THIS: MessageBox (hWnd, "MiniGUI Controls\n" "Copyright (C) 2001 Yongming Wei (ymwei@minigui.org) and others.\n", "About MiniGUI Controls", MB_OK | MB_ICONINFORMATION | MB_BASEDONPARENT); break; case IDM_ABOUT:#ifdef _MISC_ABOUTDLG#ifdef _LITE_VERSION OpenAboutDialog (hWnd);#else OpenAboutDialog ();#endif#endif break; } break; case MSG_CLOSE: DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; } return DefaultMainWinProc (hWnd, message, wParam, lParam);}static void InitCreateInfo (PMAINWINCREATE pCreateInfo){ pCreateInfo->dwStyle = WS_BORDER | WS_CAPTION | WS_VISIBLE; pCreateInfo->dwExStyle = 0; pCreateInfo->spCaption = "MiniGUI Controls"; pCreateInfo->hMenu = createmenu(); pCreateInfo->hCursor = GetSystemCursor (IDC_ARROW); pCreateInfo->hIcon = 0; pCreateInfo->MainWindowProc = CtrlTestWinProc; pCreateInfo->lx = 200; pCreateInfo->ty = 100; pCreateInfo->rx = pCreateInfo->lx + 400; pCreateInfo->by = pCreateInfo->ty + 100; pCreateInfo->iBkColor = PIXEL_lightwhite; pCreateInfo->dwAddData = 0; pCreateInfo->hHosting = HWND_DESKTOP;}int MiniGUIMain (int args, const char* arg[]){ MSG Msg; MAINWINCREATE CreateInfo; HWND hMainWnd;#ifdef _LITE_VERSION int i; const char* layer = NULL; RECT max_rect = {0, 0, 0, 0}; for (i = 1; i < args; i++) { if (strcmp (arg[i], "-layer") == 0) { layer = arg[i + 1]; break; } } GetLayerInfo (layer, &max_rect, NULL, NULL, NULL); if (JoinLayer (layer, arg[0], max_rect.left, max_rect.top, max_rect.left + 1024, max_rect.top + 768) == INV_LAYER_HANDLE) { printf ("JoinLayer: invalid layer handle.\n"); return 1; }#endif if (!InitMiniGUIExt()) { return 2; } InitCreateInfo (&CreateInfo); hMainWnd = CreateMainWindow (&CreateInfo); if (hMainWnd == HWND_INVALID) return 3; while (GetMessage (&Msg, hMainWnd)) { TranslateMessage (&Msg); DispatchMessage (&Msg); } MainWindowThreadCleanup (hMainWnd); MiniGUIExtCleanUp (); return 0;}#ifndef _LITE_VERSION#include <minigui/dti.c>#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -