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

📄 menu.cpp

📁 kaffe Java 解释器语言,源码,Java的子集系统,开放源代码
💻 CPP
字号:
/*** menu.cpp - menu support functions** Copyright (c) 1999*      Transvirtual Technologies, Inc.  All rights reserved.** See the file "license.terms" for information on usage and redistribution * of this file. */#include "toolkit.hpp"#include "cmnwnd.hpp"#if defined(UNDER_CE)#include <Commctrl.h>extern "C" HINSTANCE appInstance;#endifextern UINT KWM_CONTEXTMENU;class KMenu {public:		HMENU hMenu;	jboolean isPopup;#if defined(UNDER_CE)	KWnd* parent;#endif		KMenu( jboolean popup) {		isPopup = popup;		if ( isPopup ) {			hMenu = CreatePopupMenu();		}		else {			hMenu = CreateMenu();		}	}		void KMenu::removeItem( USHORT id) {		DeleteMenu( hMenu, id, MF_BYCOMMAND);	}		void KMenu::checkItem( USHORT id, jboolean state) {		int ws = state ? MF_CHECKED : MF_UNCHECKED;		CheckMenuItem( hMenu, id, MF_BYCOMMAND | ws);	}		void KMenu::enableItem( USHORT id, jboolean state) {		int ws = state ? MF_ENABLED : MF_GRAYED;		EnableMenuItem( hMenu, id, MF_BYCOMMAND | ws);	}		void KMenu::insertItem( TCHAR* item, int id, int pos, HMENU sub) {#if !defined(UNDER_CE)		MENUITEMINFO mi;		mi.cbSize = sizeof( MENUITEMINFO);		mi.fMask = MIIM_ID;		mi.wID	 = (USHORT)id;				if ( (item == NULL) || (*item == '-') ) {			mi.fType = MFT_SEPARATOR;			mi.fMask |= MIIM_TYPE;		}		else if ( sub) {			mi.fType = MFT_STRING;			mi.fMask |= MIIM_TYPE | MIIM_SUBMENU;			mi.hSubMenu = sub;			mi.dwTypeData = item;			mi.cch = _tcslen( item);		}		else {			mi.fMask |= MIIM_DATA | MIIM_TYPE;			mi.fType = MFT_STRING;			mi.dwItemData = id;			mi.dwTypeData = item;			mi.cch = _tcslen( item);		}		if ( pos == -1 ) {			InsertMenuItem( hMenu, mi.wID, FALSE, &mi);		}		else {			InsertMenuItem( hMenu, pos, TRUE, &mi);		}#else		/* CE doesn't have InsertMenuItem yet, revert to old Append/InsertMenu		 */        UINT flags = (!item || (*item=='-')) ? MF_SEPARATOR : (sub ? MF_POPUP : MF_STRING);		UINT mid = (UINT) (sub ? (UINT)sub : id);		if ( pos == -1 ) {			AppendMenu( hMenu, flags, mid, item);		}		else {			InsertMenu( hMenu, pos, flags, mid, item);		}#endif	}		void KMenu::assign( KWnd* parent, int x, int y) {				if ( ! isPopup) {#if !defined(UNDER_CE)			SetMenu( parent->hwnd, hMenu);#else			/* CE doesn't attach menubars to Frames, but to "CommandBars", filled			 * with menus and buttons.			 */			CommandBar_InsertMenubarEx(parent->hbar, NULL, (TCHAR*)hMenu, 0);			this->parent = parent;#endif			parent->updateInsets();		}		else {			parent->popup = hMenu;			x -= parent->insets.left;			y -= parent->insets.top;			PostMessage( parent->hwnd, KWM_CONTEXTMENU, 				(WPARAM)parent->hwnd, MAKELPARAM( x, y) );		}	}		KMenu::~KMenu() {		DestroyMenu( hMenu);	}		};extern "C" {		void* __cdecl		Java_java_awt_Toolkit_menuCreateMenu ( JNIEnv* env, jclass clazz, jboolean popup)	{		return ( new KMenu( popup));	}		void __cdecl		Java_java_awt_Toolkit_menuRedraw ( JNIEnv* env, jclass clazz, KWnd* parent)	{#if defined(UNDER_CE)		CommandBar_DrawMenuBar(parent->hbar, 0);#endif	}		void __cdecl		Java_java_awt_Toolkit_menuInsertItem ( JNIEnv* env, jclass clazz, KMenu* menu, KMenu* sub, jstring item, int pos, jobject id)	{		TCHAR* lbl = item ? java2WinString( env, X, item) : NULL;		menu->insertItem( lbl, (int)id, pos, sub ? sub->hMenu : NULL);	}		void __cdecl		Java_java_awt_Toolkit_menuRemoveItem ( JNIEnv* env, jclass clazz, KMenu* menu, jobject id)	{		menu->removeItem( (USHORT)id);	}		void __cdecl		Java_java_awt_Toolkit_menuDeleteMenu ( JNIEnv* env, jclass clazz, KMenu* menu)	{		delete( menu) ;	}		void __cdecl		Java_java_awt_Toolkit_menuCheckItem ( JNIEnv* env, jclass clazz, KMenu* menu, jobject id, jboolean state)	{		menu->checkItem( (USHORT)id, state);	}		void __cdecl		Java_java_awt_Toolkit_menuEnableItem ( JNIEnv* env, jclass clazz, KMenu* menu, jobject id, jboolean state)	{		menu->enableItem( (USHORT)id, state);	}		void __cdecl		Java_java_awt_Toolkit_menuAssign ( JNIEnv* env, jclass clazz, KWnd* parent, KMenu* menu, jint x, jint y)	{		if ( ! menu) {#if !defined(UNDER_CE)			SetMenu( parent->hwnd, NULL);#else			CommandBar_InsertMenubarEx(parent->hbar, appInstance, NULL, 0);#endif			parent->updateInsets();		}		else {#if defined(UNDER_CE)			if ( (parent->hbar == NULL) && !menu->isPopup ) {				parent->hbar = CommandBar_Create(appInstance, parent->hwnd, 0);			}#endif			menu->assign( parent, x, y);		}	}	}

⌨️ 快捷键说明

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