Q:
I was using the defaultLocation parameter when I was calling
NavGetFile(), NavPutFile(), etc., but this parameter disappeared
in the new APIs NavCreateGetFileDialog(), NavCreatePutFileDialog(),
etc., how can I set the default location in a modern way?
A:
You just need to use the NavCustomControl call using the
kNavCtlSetLocation message as early as possible after you
call NavDialogRun(). The best way is to have this code when
you get the kNavCBStart selector in your Event Proc, the
following source code excerpt illustrate this:
pascal void modernEventProc(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms, void* callBackUD)
{
...
switch(callBackSelector)
{
...
case kNavCBStart:
{
OSStatus theStatus = noErr;
AEDesc theLocation = {typeNull, NULL);
FSSpec theFSSpec;
theStatus = FSMakeFSSpec(...<your construction here>..., &theFSSpec);
if (theStatus != noErr) {... your error handling here ...}
theStatus = AECreateDesc(typeFSS, &theFSSpec, sizeof(FSSpec), &theLocation));
if (theStatus != noErr) {... your error handling here ...}
theStatus = NavCustomControl(callBackParms->context,
kNavCtlSetLocation, (void*)&theLocation);
if (theStatus != noErr) {... your error handling here ...}
}
...
}
...
}
|
Listing 1. Setting the location in the kNavCBStart selector of the Event
Proc
|
[Jul 01 2002]
|