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

📄 edit.cpp

📁 java virtual machince kaffe
💻 CPP
字号:
/*** edit.cpp - text edit classes** 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"#if !defined(UNDER_CE)#include "richedit.h"#endif#define ESB_BOTH 0#define ESB_VERT 1#define ESB_HORZ 2#define ESB_NONE 3class KEdit:public KWnd {public:			bool multi;	KEdit( HWND parent, TCHAR* txt, int style) {		multi = ( style & ES_MULTILINE ) ? true : false;		style |= DEF_WND_STYLE;		hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, TEXT("EDIT"), txt, style, 0, 0, 0, 0,			parent, (HMENU)0, NULL, NULL);		defWndProc = (WNDPROC)SetWindowLong( hwnd, GWL_WNDPROC, (LONG)WndProc);	}		bool KEdit::OnChar( TCHAR c, int data) {		jstring aCmd;		if (multi == false) {			switch (c) {			case VK_RETURN:				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 );				return true;			case VK_TAB:				//non printable char bell				return true;			}		}		else {			switch (c) {			case VK_TAB:				//do not process tabbing keys ( shift / ctrl )				if ( getKeyMods() ){					return true;				}				break;			}		}		return false;	}	bool KEdit::OnKeyDown( int virtKey, int data) {		KWnd::OnKeyDown( virtKey, data);		//do not process tabbing keys ( shift / ctrl )		return ( virtKey == VK_TAB);	}	void KEdit::setEchoChar( jchar c) {		SendMessage( hwnd, EM_SETPASSWORDCHAR, (WPARAM) c, 0);	}		void KEdit::setCaretPos( int idx) {		select( idx, idx);	}		void KEdit::select( int start, int end) {		SendMessage( hwnd, EM_SETSEL, (WPARAM)start, (LPARAM)end );	}		void KEdit::selectAll() {		select( 0, -1);	}		void replaceSelection( TCHAR* txt) {		SendMessage( hwnd, EM_REPLACESEL, (WPARAM)TRUE, (LPARAM)txt);	}};/**************************	exported functions**************************/extern "C" {		void* __cdecl		Java_java_awt_Toolkit_editCreateField ( JNIEnv* env, jclass clazz, KWnd* parent, jstring txt )	{		return ( new KEdit( parent->hwnd, java2WinString( env, X, txt), ES_AUTOHSCROLL));	}		void* __cdecl		Java_java_awt_Toolkit_editCreateArea ( JNIEnv* env, jclass clazz, KWnd* parent, jstring txt, jint style )	{		int ws = ES_MULTILINE | ES_AUTOVSCROLL;				switch ( style ) {		case ESB_VERT:			ws |= WS_VSCROLL;			break;		case ESB_HORZ:			ws |= WS_HSCROLL;			break;		case ESB_BOTH:			ws |= WS_VSCROLL | WS_HSCROLL;			break;		}				return ( new KEdit( parent->hwnd, java2WinString( env, X, txt), ws) );	}		void __cdecl		Java_java_awt_Toolkit_editSetEditable ( JNIEnv* env, jclass clazz, KEdit* wnd, jboolean edit )	{		SendMessage( wnd->hwnd, EM_SETREADONLY, edit ? 0 : 1, 0);	}		jstring __cdecl		Java_java_awt_Toolkit_editGetText ( JNIEnv* env, jclass clazz, KEdit* wnd)	{		TCHAR* str = wnd->getText();		return (env->NewStringUTF( winString2UTF(X, str, _tcslen(str)) ));	}		void __cdecl		Java_java_awt_Toolkit_editSetText ( JNIEnv* env, jclass clazz, KEdit* wnd, jstring txt )	{		SetWindowText( wnd->hwnd, java2WinString( env, X, txt) );	}		jstring __cdecl		Java_java_awt_Toolkit_editGetSelectedText ( JNIEnv* env, jclass clazz, KEdit* wnd)	{#if !defined(UNDER_CE)		jstring js;		char* buf;		int start, end;				SendMessage( wnd->hwnd, EM_GETSEL, (WPARAM)&start, (LPARAM)&end);		buf = ( char*)AWT_MALLOC( end-start);		SendMessage( wnd->hwnd, EM_GETSELTEXT, 0, (LPARAM)buf);		js = env->NewStringUTF( buf);		AWT_FREE( buf);				return js;#else		return (0);#endif	}		jint __cdecl		Java_java_awt_Toolkit_editGetSelectionStart ( JNIEnv* env, jclass clazz, KEdit* wnd)	{		int idx = -1;		SendMessage( wnd->hwnd, EM_GETSEL, (WPARAM)&idx, NULL);		return idx;	}		jint __cdecl		Java_java_awt_Toolkit_editGetSelectionEnd ( JNIEnv* env, jclass clazz, KEdit* wnd)	{		int idx = -1;		SendMessage( wnd->hwnd, EM_GETSEL, NULL, (LPARAM)&idx);		return idx;	}		void __cdecl		Java_java_awt_Toolkit_editSetSelectionStart ( JNIEnv* env, jclass clazz, KEdit* wnd, jint idx)	{		int eIdx;		SendMessage( wnd->hwnd, EM_GETSEL, NULL, (LPARAM)&eIdx);		wnd->select( idx, eIdx);	}		void __cdecl		Java_java_awt_Toolkit_editSetSelectionEnd ( JNIEnv* env, jclass clazz, KEdit* wnd, jint idx )	{		int sIdx;		SendMessage( wnd->hwnd, EM_GETSEL, (WPARAM)&sIdx, NULL);		wnd->select( sIdx, idx);	}		void __cdecl		Java_java_awt_Toolkit_editSelect ( JNIEnv* env, jclass clazz, KEdit* wnd, jstring txt, jint start, jint end )	{		wnd->select( start, end);	}		void __cdecl		Java_java_awt_Toolkit_editSelectAll ( JNIEnv* env, jclass clazz, KEdit* wnd)	{		wnd->selectAll();	}		void __cdecl		Java_java_awt_Toolkit_editSetCaretPosition ( JNIEnv* env, jclass clazz, KEdit* wnd,  jint idx)	{		wnd->setCaretPos( idx);	}		jint __cdecl		Java_java_awt_Toolkit_editGetCaretPosition ( JNIEnv* env, jclass clazz, KEdit* wnd)	{		return -1;	}		void __cdecl		Java_java_awt_Toolkit_editAppend ( JNIEnv* env, jclass clazz, KEdit* wnd, jstring txt )	{		TCHAR* buf = java2WinString( env, X, txt);		wnd->setCaretPos( GetWindowTextLength( wnd->hwnd));		wnd->replaceSelection( buf);	}		void __cdecl		Java_java_awt_Toolkit_editInsert ( JNIEnv* env, jclass clazz, KEdit* wnd, jstring txt, jint idx )	{		TCHAR* buf = java2WinString( env, X, txt);		wnd->setCaretPos( idx);		wnd->replaceSelection( buf);	}		void __cdecl		Java_java_awt_Toolkit_editReplaceRange ( JNIEnv* env, jclass clazz, KEdit* wnd, jstring txt, jint start, jint end )	{		TCHAR* buf = java2WinString( env, X, txt);		wnd->select( start, end);		wnd->replaceSelection( buf);	}		void __cdecl				Java_java_awt_Toolkit_editSetEchoChar ( JNIEnv* env, jclass clazz, KEdit* wnd, jchar c )			{		wnd->setEchoChar( c);			}	}

⌨️ 快捷键说明

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