本文整理汇总了C++中HUnlock函数的典型用法代码示例。如果您正苦于以下问题:C++ HUnlock函数的具体用法?C++ HUnlock怎么用?C++ HUnlock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了HUnlock函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CurResFile
char *__PHYSFS_platformGetUserName(void)
{
char *retval = NULL;
StringHandle strHandle;
short origResourceFile = CurResFile();
/* use the System resource file. */
UseResFile(0);
/* apparently, -16096 specifies the username. */
strHandle = GetString(-16096);
UseResFile(origResourceFile);
BAIL_IF_MACRO(strHandle == NULL, NULL, NULL);
HLock((Handle) strHandle);
retval = (char *) malloc((*strHandle)[0] + 1);
if (retval == NULL)
{
HUnlock((Handle) strHandle);
BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL);
} /* if */
memcpy(retval, &(*strHandle)[1], (*strHandle)[0]);
retval[(*strHandle)[0]] = '\0'; /* null-terminate it. */
HUnlock((Handle) strHandle);
return(retval);
} /* __PHYSFS_platformGetUserName */
示例2: UpdateAdditionsWin
void
UpdateAdditionsWin(void)
{
Rect r;
Cell c;
int i;
GrafPtr oldPort;
GetPort(&oldPort);
SetPort(gWPtr);
MoveTo( gControls->aw->compListBox.left, gControls->aw->compListBox.top - kInterWidgetPad + 1);
HLock(gControls->cfg->selAddMsg);
DrawString( CToPascal(*gControls->cfg->selAddMsg));
HUnlock(gControls->cfg->selAddMsg);
#if 0
RGBColor backColorOld;
Rect adjustedRect, *clRect = &gControls->aw->compListBox;
SetRect(&adjustedRect, clRect->left, clRect->top+1, clRect->right, clRect->bottom-1);
GetBackColor(&backColorOld);
BackColor(whiteColor);
EraseRect(&adjustedRect);
RGBBackColor(&backColorOld);
#endif
LUpdate( (*gControls->aw->compList)->port->visRgn, gControls->aw->compList);
SetRect(&r, gControls->aw->compListBox.left, gControls->aw->compListBox.top,
gControls->aw->compListBox.right + 1, gControls->aw->compListBox.bottom);
FrameRect(&r);
SetPt(&c, 0, 0);
if (LGetSelect(true, &c, gControls->aw->compList))
{
HLock((Handle)gControls->aw->compDescTxt);
SetRect(&r, (*gControls->aw->compDescTxt)->viewRect.left,
(*gControls->aw->compDescTxt)->viewRect.top,
(*gControls->aw->compDescTxt)->viewRect.right,
(*gControls->aw->compDescTxt)->viewRect.bottom);
HUnlock((Handle)gControls->aw->compDescTxt);
TEUpdate(&r, gControls->aw->compDescTxt);
}
DrawDiskSpaceMsgs( gControls->opt->vRefNum );
for (i = 0; i < numRows; i++)
{
if (gControls->cfg->comp[rowToComp[i]].highlighted)
{
AddInitRowHighlight(i);
break;
}
}
SetPort(oldPort);
}
示例3: unlock_collection
static void unlock_collection(
struct collection_header *header)
{
assert(header->collection);
HUnlock((Handle)header->collection);
HUnlock((Handle)header->shading_tables);
return;
}
示例4: fixMacros
// This routine makes sure there is at least a null byte (and accompanying index)
// for every defined macro numbered n such that n < NUM_MACROS
// It lengthens the handle if necessary (backwards compatibility),
// but does NOT truncate additional data (forwards compatibility).
void fixMacros(NewMacroInfo *macrost)
{
Handle macroHandle;
Ptr macroPtr, pos;
long len, len2;
short i, num;
macroHandle = macrost->handle;
HLock(macroHandle);
macroPtr = *macroHandle;
len = macrost->index[0];
pos = macroPtr;
pos += (len - 1);
if (*pos != 0) {
len++;
HUnlock(macroHandle);
SetHandleSize(macroHandle, len);
HLock(macroHandle);
macroPtr = *macroHandle;
pos = macroPtr + (len - 1);
*pos = 0;
}
num = 0;
for (i = 1; i < NUM_MACROS; i++) {
if (macrost->index[i] == 0) {
num = i;
break;
}
}
if (num) {
len2 = len;
len += (NUM_MACROS - num);
HUnlock(macroHandle);
SetHandleSize(macroHandle, len);
HLock(macroHandle);
macroPtr = *macroHandle;
pos = macroPtr + len2;
for (i = num; i < NUM_MACROS; i++, pos++) {
*pos = 0;
macrost->index[i] = pos - macroPtr;
}
}
HUnlock(macroHandle);
macrost->index[0] = len;
}
示例5: LoadAudioUnits
void LoadAudioUnits()
{
ComponentDescription desc;
Component component;
desc.componentType = kAudioUnitType_Effect; //'aufx'
desc.componentSubType = 0;
desc.componentManufacturer = 0;
desc.componentFlags = 0;
desc.componentFlagsMask = 0;
component = FindNextComponent(NULL, &desc);
while (component != NULL) {
ComponentDescription found;
Handle nameHandle = NewHandle(0);
GetComponentInfo(component, &found, nameHandle, 0, 0);
HLock(nameHandle);
int len = ((const char *)(*nameHandle))[0];
wxString name((const char *)(*nameHandle)+1, len);
HUnlock(nameHandle);
DisposeHandle(nameHandle);
Effect::RegisterEffect(new AudioUnitEffect(name, component));
component = FindNextComponent (component, &desc);
}
}
示例6: GetToolname
OSErr GetToolname(char* toolName)
{
OSErr error = noErr;
FSSpec where;
short ref;
Handle theString;
toolName[0] = '\0'; // Start without a name
error = FindPrefs(&where);
ref = FSpOpenResFile(&where, fsRdWrPerm);
if (ref != -1) {
theString = Get1Resource('STR ',kToolNameRes); // Should look in most recent file first
if (theString != nil) {
HLock(theString);
memcpy(toolName, *theString, (*theString)[0] + 1);
HUnlock(theString);
ReleaseResource(theString);
} else {
error = -5;
}
CloseResFile(ref);
if (error == noErr) { // CTB is touchy; make sure this tool exists
error = VerifyToolExists(toolName);
}
} else {
error = ResError();
}
return error;
}
示例7: Get1Resource
// Parse a single resource
bool XML_ResourceFork::ParseResource(ResType Type, short ID)
{
ResourceHandle = Get1Resource(Type,ID);
if (ResourceHandle == NULL) {
return false;
}
HLock(ResourceHandle);
if (!DoParse()) {
const char *Name = SourceName ? SourceName : "[]";
#ifdef TARGET_API_MAC_CARBON
csprintf(
temporary,
"There were configuration-file parsing errors in resource %hd of object %s",
ID,Name);
SimpleAlert(kAlertStopAlert,temporary);
#else
psprintf(
ptemporary,
"There were configuration-file parsing errors in resource %hd of object %s",
ID,Name);
ParamText(ptemporary,0,0,0);
Alert(FatalErrorAlert,NULL);
#endif
ExitToShell();
}
HUnlock(ResourceHandle);
ReleaseResource(ResourceHandle);
return true;
}
示例8: pict_from_gworld
PRIVATE PicHandle
pict_from_gworld (GWorldPtr gp, int *lenp)
{
PicHandle retval;
if (!gp)
retval = NULL;
else
{
Rect pict_frame;
PixMapHandle pm;
pm = GetGWorldPixMap (gp);
pict_frame = PIXMAP_BOUNDS (pm);
retval = OpenPicture (&pict_frame);
if (retval)
{
ClipRect (&pict_frame);
HLock ((Handle) pm);
CopyBits ((BitMap *) STARH (pm), PORT_BITS_FOR_COPY (thePort),
&pict_frame, &pict_frame, srcCopy, NULL);
HUnlock ((Handle) pm);
ClosePicture ();
}
}
return retval;
}
示例9: free_all_alloc_pools
void free_all_alloc_pools()
{
PoolHandlePtr p, q;
long count;
if ( poolList == 0 ) return;
assert( *poolList != 0 );
// loop through the allocated blocks and free them
p = *poolList;
count = GetHandleSize( (Handle)poolList )/sizeof(PoolHandle);
q = p + count;
HLock( (Handle)poolList );
while (p<q) {
if ( *p != 0 )
DisposeHandle( (Handle)*p );
*p = 0;
p++;
}
HUnlock( (Handle)poolList );
DisposeHandle( (Handle)poolList );
poolList = 0;
// reset the alloc mechanism
uninitialize_memory_pool();
}
示例10: PushCalcEntry
void PushCalcEntry(CtlRecHndl entryBox)
{
abCalcOp *op;
GetLETextByID(gCalcWinPtr, abCalcEntryBox, &gStrBuf);
if (gStrBuf.textLength > 0) {
gStrBuf.text[gStrBuf.textLength] = '\0';
op = abCalcOpLookup(gStrBuf.text);
if (op != NULL) {
op->execute();
} else if (abCalcParseExpr(&gNDAExpr, gStrBuf.text) != NULL) {
abCalcStackExprPush(&gNDAExpr);
} else {
LERecHndl leHandle;
HLock((Handle)entryBox);
leHandle = (LERecHndl)(*entryBox)->ctlData;
HUnlock((Handle)entryBox);
LESetSelect(0, gStrBuf.textLength, leHandle);
abCalcRaiseError(abCalcSyntaxError, NULL);
return;
}
gStrBuf.textLength = 0;
SetLETextByID(gCalcWinPtr, abCalcEntryBox, &gStrBuf);
}
}
示例11: XIconToIPIcon
/* convert icns(icons for MacOS X) to IPIcon */
OSErr XIconToIPIcon(const FSSpec *theFile,IPIconRec *ipIcon)
{
OSErr err;
IconFamilyHandle theIconFamily;
short refNum;
long count;
if (isIconServicesAvailable)
{
/* open icns file */
err=FSpOpenDF(theFile,fsRdPerm,&refNum);
if (err!=noErr) return err;
err=GetEOF(refNum,&count);
if (err!=noErr)
{
FSClose(refNum);
return err;
}
theIconFamily=(IconFamilyHandle)NewHandle(count);
HLock((Handle)theIconFamily);
err=FSRead(refNum,&count,*theIconFamily);
HUnlock((Handle)theIconFamily);
err=FSClose(refNum);
/* convert IconFamily to IPIcon */
err=IconFamilyToIPIcon(theIconFamily,ipIcon);
DisposeHandle((Handle)theIconFamily);
return err;
}
else
return -1;
}
示例12: ResObj_tp_init
static int ResObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
{
char *srcdata = NULL;
int srclen = 0;
Handle itself;
char *kw[] = {"itself", 0};
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, ResObj_Convert, &itself))
{
((ResourceObject *)_self)->ob_itself = itself;
return 0;
}
PyErr_Clear();
if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "|s#", kw, &srcdata, &srclen)) return -1;
if ((itself = NewHandle(srclen)) == NULL)
{
PyErr_NoMemory();
return 0;
}
((ResourceObject *)_self)->ob_itself = itself;
if (srclen && srcdata)
{
HLock(itself);
memcpy(*itself, srcdata, srclen);
HUnlock(itself);
}
return 0;
}
示例13: NewHandle
static PyObject *Res_Handle(PyObject *_self, PyObject *_args)
{
PyObject *_res = NULL;
char *buf;
int len;
Handle h;
ResourceObject *rv;
if (!PyArg_ParseTuple(_args, "s#", &buf, &len))
return NULL;
h = NewHandle(len);
if ( h == NULL ) {
PyErr_NoMemory();
return NULL;
}
HLock(h);
memcpy(*h, buf, len);
HUnlock(h);
rv = (ResourceObject *)ResObj_New(h);
rv->ob_freeit = PyMac_AutoDisposeHandle;
_res = (PyObject *)rv;
return _res;
}
示例14: FindFolderPath
void FindFolderPath( Handle appendPathTo, int folderType, Str255 pathInFolder )
{
OSErr err;
short vRefNum;
long dirID;
long appendPathToLength;
short pathLength;
Handle path;
// Try to get the application support folder
err = FindFolder( kOnSystemDisk, folderType, FALSE, &vRefNum, &dirID );
if( ! err )
{
// Find the mindy:libraries dir and get its full path
// Resize the destination handle to fit,
// then copy in the path and the sub-path
err = GetFullPath( vRefNum, dirID, "\p", &pathLength, &path );
if( ! err )
{
appendPathToLength = GetHandleSize( appendPathTo );
SetHandleSize( appendPathTo, appendPathToLength+ pathLength + pathInFolder[ 0 ] );
err = MemError();
if( ! err )
{
HLock( appendPathTo );
HLock( path );
BlockMove( *path, &((*appendPathTo)[ appendPathToLength ]), pathLength );
BlockMove( &(pathInFolder[ 1 ]), &((*appendPathTo)[ appendPathToLength + pathLength ]) , pathInFolder[ 0 ] );
HUnlock( path );
HLock( appendPathTo );
}
}
}
示例15: BuildLibPath
void BuildLibPath( void )
{
Handle searchPath;
// make the search path handle
// and fill it with the initial search path
// use strlen neat so as to chop off trailing null!
searchPath = NewHandle( strlen( INITIAL_SEARCH_PATH ) );
if( (searchPath != NULL) && ( ResError() == noErr ) )
{
HLock( searchPath );
BlockMove( INITIAL_SEARCH_PATH, *searchPath, strlen( INITIAL_SEARCH_PATH ) );
HUnlock( searchPath );
// Try to get the application support folder
FindFolderPath( searchPath, kApplicationSupportFolderType, FOLDER_SEARCH_PATH );
// Try to get the extensions folder
FindFolderPath( searchPath, kExtensionFolderType, FOLDER_SEARCH_PATH );
// lock it out of the way,
// null terminate it, overwriting the last \t, making a c string
// and set LIBDIR to it
HLockHi( searchPath );
(*searchPath)[ GetHandleSize( searchPath ) -1 ] = '\0';
LIBDIR = *searchPath;
}
}