A
download JString.cpp
Language: C++
LOC: 48
Project Info
JCom (Java-COM Bridge)(jcom)
Server: SourceForge
Type: cvs
...e\j\jcom\jcom\jcom\src\cpp\
   callCom.cpp
   Com.cpp
   guid.cpp
   IDispatch.cpp
   IEnumVARIANT.cpp
   InvokeHelper.cpp
   IPersist.cpp
   ITypeInfo.cpp
   ITypeLib.cpp
   IUnknown.cpp
   JCom.h
   ...2_no_0005fji_jcom_Com.h
   ...005fji_jcom_IDispatch.h
   ...fji_jcom_IEnumVARIANT.h
   ...0005fji_jcom_IPersist.h
   ...005fji_jcom_ITypeInfo.h
   ...0005fji_jcom_ITypeLib.h
   ...0005fji_jcom_IUnknown.h
   JString.cpp
   VARIANT.cpp

// JNIjstring߂̓{l̓{lɂ{l̂߂̃CuBȂĂˁB

#include <jni.h>
#include "JCom.h"
#include "atlbase.h"
//#include "atlconv.h"

//------------------------------------------------------------------------------
//  jstring Shift-JIS̕ɕϊB
// gp͖߂l free()邱
// ǂjstringnull-terminateł͂Ȃ炵BW2OLEW2AgȂ̂B
// ŁAW2OLEȂǂ̃}N̒gĂ݂ƁAWideCharToMultiByte()gĂB
// ́Anull-terminateȊOłg悤ɂłĂB
// jstrnull̂Ƃɂ́ANULLԂB̏ꍇ́A߂lfree()Kv͂ȂB
//------------------------------------------------------------------------------
char* jstring2sjis(JNIEnv *env, jstring jstr)
{
    if(jstr==NULL) return NULL;
    const jchar* jc  = env->GetStringChars(jstr, NULL);
    int len = env->GetStringLength(jstr);
    char* sjis = (char*)malloc(len*2+1);
    int bytes = WideCharToMultiByte(CP_ACP, 0, jc, len, sjis, len*2+1, NULL, NULL);
    sjis[bytes] = '\0';
    env->ReleaseStringChars(jstr, jc);
    return sjis;
}

// gp͖߂l SysFreeString()邱
BSTR	jstring2BSTR(JNIEnv *env, jstring jstr)
{
	const jchar* jc  = env->GetStringChars(jstr, NULL);
	int len = env->GetStringLength(jstr);
	BSTR bstr = SysAllocStringLen(jc, len);
	env->ReleaseStringChars(jstr, jc);
	return bstr;
}


// gp͖߂lEEEAȂĂ̂ȁH
// 쐬ɂul̊Ǘɓ̂ŁAfreereleaseKvȂH
jstring	BSTR2jstring(JNIEnv *env, BSTR bstr)
{
	int len = SysStringLen(bstr);
	return env->NewString(bstr, len);
}

#if 0

//------------------------------------------------------------------------------
//	jstring Shift-JIS̕ɕϊB
// gp͖߂l free()邱
// ǂjstringnull-terminateł͂Ȃ炵BW2OLEW2AgȂ̂B
// ŁAW2OLEȂǂ̃}N̒gĂ݂ƁAWideCharToMultiByte()gĂB
// ́Anull-terminateȊOłg悤ɂłĂB
//------------------------------------------------------------------------------
jstring sjis2jstring(JNIEnv *env, char* sjis)
{
int MultiByteToWideChar( 
UINT CodePage, // code page 
DWORD dwFlags, // character-type options 
LPCSTR lpMultiByteStr, // address of string to map 
int cchMultiByte, 		// number of characters in string 
LPWSTR lpWideCharStr, // address of wide-character buffer 
int cchWideChar // size of buffer 
); 

typedef OLECHAR *BSTR;

OLECHAR	QoCgjR[ĥOI[
#endif

//------------------------------------------------------------------------------
// fobOp
void print_BSTR(OLECHAR* psz)
{
    char bufA[256];
    if(psz==NULL) { printf("(null)"); return; }
    WideCharToMultiByte(CP_ACP, NULL, psz, -1, bufA, 256, NULL, NULL);
	printf("%s", bufA);
}

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us