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

📄 btn.cpp

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 CPP
字号:
/*** btn.cpp - ** 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"class KButton:public KWnd {public:		bool blockCmd;		KButton( HWND parent, TCHAR* lbl, int style) {		style |= DEF_WND_STYLE;		hwnd = CreateWindow( TEXT("BUTTON"), lbl, style, 0, 0, 0, 0,			parent, (HMENU)0, NULL, NULL);		defWndProc = (WNDPROC)SetWindowLong( hwnd, GWL_WNDPROC, (LONG)WndProc);		blockCmd = false;	}		bool KButton::OnCommand( int cmd) {		jstring aCmd;		int style;				switch ( cmd) {		case BN_CLICKED:			style = GetWindowLong( hwnd, GWL_STYLE);						//Checkboxes have no AUTO style, leave state model and checking			//to java						//Grouped CheckBox			if ( style & BS_RADIOBUTTON ) {				// workaround for notifications caused by WM_SETFOCUS				// ( tab stepping )				if ( blockCmd ) {					blockCmd = false;					return false;				}				X->jEvt = JniEnv->CallStaticObjectMethod( ItemEvent, getItemEvent,					srcIdx, getCheck() ? DESELECTED : SELECTED, 0 );			}			//Simple CheckBox			else if ( style & BS_CHECKBOX ) {				X->jEvt = JniEnv->CallStaticObjectMethod( ItemEvent, getItemEvent,					srcIdx, getCheck() ? DESELECTED : SELECTED, 0 );			}			//PushButton			else {				GetWindowText( hwnd, X->buf, X->nBuf);				aCmd = JniEnv->NewStringUTF( winString2UTF(X, X->buf, _tcslen(X->buf)) );				X->jEvt = JniEnv->CallStaticObjectMethod( ActionEvent, getActionEvent,					srcIdx, aCmd, 0 );			}			break;		case BN_PUSHED:			break;		case BN_UNPUSHED:			break;		}		return true;	}		bool KButton::OnFocusChange ( bool gain) {		X->jEvt = JniEnv->CallStaticObjectMethod( FocusEvent, getFocusEvent,			srcIdx, gain ? FOCUS_GAINED : FOCUS_LOST, false);		// workaround for notifications caused by WM_SETFOCUS ( tab stepping )		blockCmd = true;		return false;	}		bool KButton::OnMouseUp( int btn, int x, int y) {		KWnd::OnMouseUp( btn, x, y);		// workaround for notifications caused by WM_SETFOCUS ( tab stepping )		blockCmd = false;		return false;	}	void KButton::setCheck( jboolean check) {		int cs = check ? BST_CHECKED : BST_UNCHECKED;		SendMessage( hwnd, BM_SETCHECK, (WPARAM)cs, 0);	}		bool KButton::getCheck() {		int s = SendMessage( hwnd, BM_GETCHECK, 0, 0);		return ( s == BST_CHECKED);	}		void KButton::setGrouped( jboolean grouped) {		int style = GetWindowLong( hwnd, GWL_STYLE);		if ( grouped) {			style |= BS_RADIOBUTTON;			style &= ~BS_CHECKBOX;		}		else {			style |= BS_CHECKBOX;			style &= ~BS_RADIOBUTTON;		}		SetWindowLong( hwnd, GWL_STYLE, style);	}};/**************************	exported functions**************************/extern "C" {		void* __cdecl		Java_java_awt_Toolkit_btnCreatePushbutton ( JNIEnv* env, jclass clazz, KWnd* parent, jstring label )	{		return ( new KButton( parent->hwnd, java2WinString( env, X, label), BS_PUSHBUTTON) );	}		void* __cdecl		Java_java_awt_Toolkit_btnCreateCheckbox ( JNIEnv* env, jclass clazz, KWnd* parent, jstring label )	{		return ( new KButton( parent->hwnd, java2WinString( env, X, label), BS_CHECKBOX) );	}		void* __cdecl		Java_java_awt_Toolkit_btnCreateRadiobutton ( JNIEnv* env, jclass clazz, KWnd* parent, jstring label )	{		return ( new KButton( parent->hwnd, java2WinString( env, X, label), BS_RADIOBUTTON) );	}		void __cdecl		Java_java_awt_Toolkit_btnSetLabel ( JNIEnv* env, jclass clazz, KButton* wnd, jstring label)	{		wnd->setText( label);	}		void __cdecl		Java_java_awt_Toolkit_btnSetCheck ( JNIEnv* env, jclass clazz, KButton* wnd, jboolean check )	{		wnd->setCheck( check);	}		jboolean __cdecl		Java_java_awt_Toolkit_btnGetCheck ( JNIEnv* env, jclass clazz, KButton* wnd )	{		return wnd->getCheck();	}		void __cdecl		Java_java_awt_Toolkit_btnSetGrouped ( JNIEnv* env, jclass clazz, KButton* wnd, jboolean grouped )	{		wnd->setGrouped( grouped);	}}

⌨️ 快捷键说明

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