当前位置: 首页>>代码示例>>C++>>正文


C++ TJS_W函数代码示例

本文整理汇总了C++中TJS_W函数的典型用法代码示例。如果您正苦于以下问题:C++ TJS_W函数的具体用法?C++ TJS_W怎么用?C++ TJS_W使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了TJS_W函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: V2Unlink

//---------------------------------------------------------------------------
extern "C" HRESULT _stdcall _export V2Unlink()
{
	// 吉里吉里側から、プラグインを解放しようとするときに呼ばれる関数。

	// もし何らかの条件でプラグインを解放できない場合は
	// この時点で E_FAIL を返すようにする。
	// ここでは、TVPPluginGlobalRefCount が GlobalRefCountAtInit よりも
	// 大きくなっていれば失敗ということにする。
	if(TVPPluginGlobalRefCount > GlobalRefCountAtInit) return E_FAIL;
		// E_FAIL が帰ると、Plugins.unlink メソッドは偽を返す

	// TJS のグローバルオブジェクトに登録した関数を削除する

	// - まず、TJS のグローバルオブジェクトを取得する
	iTJSDispatch2 * global = TVPGetScriptDispatch();

	// - global の DeleteMember メソッドを用い、オブジェクトを削除する
	if(global)
	{
		// TJS 自体が既に解放されていたときなどは
		// global は NULL になり得るので global が NULL でない
		// ことをチェックする

		global->DeleteMember(
			0, // フラグ ( 0 でよい )
			TJS_W("wmrStart"), // メンバ名
			NULL, // ヒント
			global // コンテキスト
			);
		global->DeleteMember(
			0, // フラグ ( 0 でよい )
			TJS_W("wmrStop"), // メンバ名
			NULL, // ヒント
			global // コンテキスト
			);
			// 登録した関数が複数ある場合は これを繰り返す
	}

	// - global を Release する
	if(global) global->Release();

	// スタブの使用終了(必ず記述する)
	TVPUninitImportStub();

	return S_OK;
}
开发者ID:John-He-928,项目名称:krkrz,代码行数:47,代码来源:main.cpp

示例2: AddTrace

//---------------------------------------------------------------------------
bool eTJSScriptError::AddTrace(const ttstr & data)
{
	tjs_int len = Trace.GetLen();
	if(len >= TJS_MAX_TRACE_TEXT_LEN) return false;
	if(len != 0) Trace += TJS_W(" <-- ");
	Trace += data;
	return true;
}
开发者ID:ihavesomefork,项目名称:DollEngine,代码行数:9,代码来源:tjsError.cpp

示例3: TVPFormatMessage

ttstr TVPFormatMessage(const tjs_char *msg, const ttstr & p1, const ttstr & p2)
{
	tjs_char *p;
	tjs_char * buf =
		new tjs_char[TJS_strlen(msg) + p1.GetLen() + p2.GetLen() + 1];
	p = buf;
	for(;*msg;msg++,p++)
	{
		if(*msg == TJS_W('%'))
		{
			if(msg[1] == TJS_W('%'))
			{
				// %%
				*p = TJS_W('%');
				msg++;
				continue;
			}
			else if(msg[1] == TJS_W('1'))
			{
				// %1
				TJS_strcpy(p, p1.c_str());
				p += p1.GetLen();
				p--;
				msg++;
				continue;
			}
			else if(msg[1] == TJS_W('2'))
			{
				// %2
				TJS_strcpy(p, p2.c_str());
				p += p2.GetLen();
				p--;
				msg++;
				continue;
			}
		}
		*p = *msg;
	}

	*p = 0;

	ttstr ret(buf);
	delete [] buf;
	return ret;
}
开发者ID:harada3,项目名称:krkrz,代码行数:45,代码来源:MsgIntf.cpp

示例4: str

//---------------------------------------------------------------------------
void GDIFontRasterizer::InitChAntialiasMethod() {
	if(ChAntialiasMethodInit) return;

	ChAntialiasMethod = camAPI; // default

	tTJSVariant val;
	if( TVPGetCommandLine(TJS_W("-aamethod"), &val) ) {
		ttstr str(val);
#if 0 // まったく意味のないコード?
		if(str == TJS_W("auto"))
			; // nothing to do
#endif
		if(str == TJS_W("res8"))
			ChAntialiasMethod = camResample8;
		else if(str == TJS_W("res4"))
			ChAntialiasMethod = camResample4;
		else if(str == TJS_W("api"))
			ChAntialiasMethod = camAPI;
		else if(str == TJS_W("rgb"))
			ChAntialiasMethod = camSubpixelRGB;
		else if(str == TJS_W("bgr"))
			ChAntialiasMethod = camSubpixelBGR;
	}

	ChAntialiasMethodInit = true;
}
开发者ID:harada3,项目名称:krkrz,代码行数:27,代码来源:GDIFontRasterizer.cpp

示例5: LayerPropGet

	static tTVInteger LayerPropGet(iTJSDispatch2 *lay, ttstr &prop, tTVInteger defval = 0) {
		if (!LayerClass) {
			tTJSVariant var;
			TVPExecuteExpression(TJS_W("Layer"), &var);
			LayerClass = var.AsObjectNoAddRef();
		}
		tTJSVariant val;
		return (TJS_FAILED(LayerClass->PropGet(0, prop.c_str(), prop.GetHint(), &val, lay))) ? defval : val.AsInteger();
	}
开发者ID:John-He-928,项目名称:krkrz,代码行数:9,代码来源:Main.cpp

示例6: TJSAddObjectHashRecord

//---------------------------------------------------------------------------
// tTJSNativeFunction
//---------------------------------------------------------------------------
tTJSNativeFunction::tTJSNativeFunction(const tjs_char *name)
{
	if(TJSObjectHashMapEnabled())
	{
		TJSAddObjectHashRecord(this);
		if(name)
			TJSObjectHashSetType(this, ttstr(TJS_W("(native function) ")) + name);
	}
}
开发者ID:xmoeproject,项目名称:X-moe,代码行数:12,代码来源:tjsNative.cpp

示例7: TVPGetVersionString

//---------------------------------------------------------------------------
ttstr TVPGetVersionString()
{
	TVPGetVersion();
	tjs_char verstr[100];
	TJS_snprintf(verstr, sizeof(verstr)/sizeof(tjs_char), TJS_W("%d.%d.%d.%d"),
		TVPVersionMajor, TVPVersionMinor,
		TVPVersionRelease, TVPVersionBuild);
	return ttstr(verstr);
}
开发者ID:harada3,项目名称:krkrz,代码行数:10,代码来源:MsgIntf.cpp

示例8: PostRegistCallback

/**
 * 登録処理後
 */
static void PostRegistCallback()
{
	// Array.count を取得
	{
		tTJSVariant varScripts;
		TVPExecuteExpression(TJS_W("Array"), &varScripts);
		iTJSDispatch2 *dispatch = varScripts.AsObjectNoAddRef();
		tTJSVariant val;
		if (TJS_FAILED(dispatch->PropGet(TJS_IGNOREPROP,
										 TJS_W("count"),
										 NULL,
										 &val,
										 dispatch))) {
			TVPThrowExceptionMessage(L"can't get Array.count");
		}
		ArrayCountProp = val.AsObject();
	}
}
开发者ID:John-He-928,项目名称:krkrz,代码行数:21,代码来源:Main.cpp

示例9: TVPThrowExceptionMessage

//---------------------------------------------------------------------------
void TJS_INTF_METHOD tTVPDrawDevice::RemoveLayerManager(iTVPLayerManager * manager)
{
	// Managers から manager を削除する。Releaseする。
	std::vector<iTVPLayerManager *>::iterator i = std::find(Managers.begin(), Managers.end(), manager);
	if(i == Managers.end())
		TVPThrowExceptionMessage(TJS_W("Internal Error"));
	(*i)->Release();
	Managers.erase(i);
}
开发者ID:xmoeproject,项目名称:X-moe,代码行数:10,代码来源:BasicDrawDevice.cpp

示例10: PushConfigFileOptions

//---------------------------------------------------------------------------
static void PushConfigFileOptions(TStringList * options)
{
	if(!options) return;
	for(int j = 0; j < options->Count; j++)
	{
		if(options->Strings[j].c_str()[0] != ';') // unless comment
			TVPProgramArguments.push_back(
				TVPParseCommandLineOne(TJS_W("-") + ttstr(options->Strings[j])));
	}
}
开发者ID:xmoeproject,项目名称:X-moe,代码行数:11,代码来源:SysInitImpl.cpp

示例11: TJSThrowFrom_tjs_error

//---------------------------------------------------------------------------
void TJSThrowFrom_tjs_error(tjs_error hr, const tjs_char *name)
{
	// raise an exception descripted as tjs_error
	// name = variable name ( otherwide it can be NULL )

	switch(hr)
	{
	case TJS_E_MEMBERNOTFOUND:
	  {
		if(name)
		{
			ttstr str(TJSMemberNotFound);
			str.Replace(TJS_W("%1"), name);
			TJS_eTJSError(str);
		}
		else
		{
			TJS_eTJSError(TJSMemberNotFoundNoNameGiven);
		}
	  }
	case TJS_E_NOTIMPL:
		TJS_eTJSError(TJSNotImplemented);
	case TJS_E_INVALIDPARAM:
		TJS_eTJSError(TJSInvalidParam);
	case TJS_E_BADPARAMCOUNT:
		TJS_eTJSError(TJSBadParamCount);
	case TJS_E_INVALIDTYPE:
		TJS_eTJSError(TJSInvalidType);
	case TJS_E_ACCESSDENYED:
		TJS_eTJSError(TJSAccessDenyed);
	case TJS_E_INVALIDOBJECT:
		TJS_eTJSError(TJSInvalidObject);
	case TJS_E_NATIVECLASSCRASH:
		TJS_eTJSError(TJSNativeClassCrash);
	default:
		if(TJS_FAILED(hr))
		{
			tjs_char buf[256];
            TJS_snprintf(buf, 256, TJS_W("Unknown failure : %08X"), hr);
			TJS_eTJSError(buf);
		}
	}
}
开发者ID:ihavesomefork,项目名称:DollEngine,代码行数:44,代码来源:tjsError.cpp

示例12: getSampleValue

	/**
	 * サンプル値の取得(新方式)
	 * getVisBuffer(buf, sampleCount, 1, sampleAhead)でサンプルを取得し,
	 * (value/32768)^2の最大値を取得します。(0〜1の実数で返ります)
	 * ※このプロパティを読み出すと暗黙でuseVisBuffer=trueに設定されます
	 */
	double getSampleValue() {
		memset(buf, 0, counts*sizeof(short));
		tTJSVariant result;
		tjs_error r = objthis->FuncCall(0, TJS_W("getVisBuffer"), &hint, &result, 4, params, objthis);

		if (r != TJS_S_OK) TVPAddLog(ttstr(TJS_W("getVisBuffer failed: "))+ttstr(r));

		int cnt = (int)result.AsInteger();
		if (cnt > counts || cnt < 0) cnt = counts;

		// サンプルの二乗中の最大値を返す
		double max = 0;
		for (int i=cnt-1;i>=0;i--) {
			double s = ((double)buf[i]) / +32768.0;
			s *= s;
			if (max < s) max = s;
		}
		return max;
	}
开发者ID:xmoeproject,项目名称:X-moe,代码行数:25,代码来源:main.cpp

示例13: TJSReportExceptionSource

//---------------------------------------------------------------------------
// throw helper functions
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
static void TJSReportExceptionSource(const ttstr &msg, tTJSScriptBlock *block,
	tjs_int srcpos)
{
	if(TJSEnableDebugMode)
	{
		tTJS *tjs = block->GetTJS();
		tjs->OutputExceptionToConsole((msg + TJS_W(" at ") +
			block->GetLineDescriptionString(srcpos)).c_str());
	}
}
开发者ID:ihavesomefork,项目名称:DollEngine,代码行数:14,代码来源:tjsError.cpp

示例14: TJS_sprintf

//---------------------------------------------------------------------------
ttstr tTJSScriptBlock::GetLineDescriptionString(tjs_int pos) const
{
    // get short description, like "mainwindow.tjs(321)"
    // pos is in character count from the first of the script
    tjs_int line =SrcPosToLine(pos)+1;
    ttstr name;
    if(Name)
    {
        name = Name;
    }
    else
    {
        tjs_char ptr[128];
        TJS_sprintf(ptr, TJS_W("0x%p"), this);
        name = ttstr(TJS_W("[email protected]")) + ptr;
    }

    return name + TJS_W("(") + ttstr(line) + TJS_W(")");
}
开发者ID:QuocHuy7a10,项目名称:Arianrhod,代码行数:20,代码来源:tjsScriptBlock.cpp

示例15: urldecode

	// urldecode処理
	static tjs_error TJS_INTF_METHOD urldecode(tTJSVariant *result,
											   tjs_int numparams,
											   tTJSVariant **param,
											   iTJSDispatch2 *objthis) {

		if (numparams > 0 && result) {
			bool utf8 = !(numparams> 1 && (int)*param[1] == 0);
			ttstr str = *param[0];
			tjs_int len = str.length();
			std::string os;
			for (int i=0;i<len;i++) {
				int ch = str[i];
				if (ch > 0xff) {
					return TJS_E_INVALIDPARAM;
				}
				if (ch == '%') {
					if (i + 2 >= len) {
						return TJS_E_INVALIDPARAM;
					}
					char buf[3];
					buf[0] = (char)str[i+1];
					buf[1] = (char)str[i+2];
					buf[2] = '\0';
					long n = strtol(buf, NULL, 16);
					if (errno == ERANGE) {
						return TJS_E_INVALIDPARAM;
					}
					os += (char)n;
					i+=2;
				} else {
					os += (char)ch;
				}
			}
			if (utf8) {
				const char *s = os.c_str();
				tjs_int len = TVPUtf8ToWideCharString(s, NULL);
				if (len > 0) {
					tjs_char *dat = new tjs_char[len+1];
					try {
						TVPUtf8ToWideCharString(s, dat);
						dat[len] = TJS_W('\0');
					}
					catch(...) {
						delete [] dat;
						throw;
					}
					*result = ttstr(dat);
					delete [] dat;
				}				
			} else {
				*result = ttstr(os.c_str());
			}
		}
		return TJS_S_OK;
	}
开发者ID:John-He-928,项目名称:krkrz,代码行数:56,代码来源:main.cpp


注:本文中的TJS_W函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。