コード例 #1
0
VError VMacResFile::_GetResource(const VString& inType, const VString& inName, Handle* outHandle) const
{
OSErr	macError = noErr;

	Str255	spName;
	*outHandle = NULL;

	if (!testAssert(fRefNum != -1))
		return VE_STREAM_NOT_OPENED;
	
	ResType type = inType.GetOsType();
	if (type == 0)
		return VE_INVALID_PARAMETER;
	
	inName.MAC_ToMacPString(spName, 255);
	
	sWORD	curres = ::CurResFile();
	if (curres != fRefNum)
		::UseResFile(fRefNum);

	*outHandle = fUseResourceChain ? ::GetNamedResource(type, spName) : ::Get1NamedResource(type, spName);
	macError = ::ResError();
	
	if (curres != fRefNum)
		::UseResFile(curres);

	VError error = VErrorBase::NativeErrorToVError((VNativeError)macError);
	
	return error;
}
コード例 #2
0
VError VMacResFile::SetResourceName(const VString& inType, sLONG inID, const VString& inName)
{
	// test if the res file is not read-only
	if (!testAssert(!fReadOnly))
		return VE_ACCESS_DENIED;

	Handle data = NULL;
	VError error = _GetResource(inType, inID, &data);
	if (error == VE_OK)
	{
		Str255 spName;
		inName.MAC_ToMacPString(spName, 255);
		::SetResInfo(data, (short) inID, spName);
		OSErr macError = ::ResError();
		assert(macError == noErr);
		error = VErrorBase::NativeErrorToVError((VNativeError)macError);
	}
	return error;
}