高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1151
How can I set the default location with the modern Navigation APIs NavCreatexxx?


Q: 以前、NavGetFile() や NavPutFile()defaultLocation などを呼び出していたときには、defaultLocation パラメータを使っていましたが、 新しい NavCreateGetFileDialog() や NavCreatePutFileDialog() などの API では、このパラメータがなくなっています。 現在ではどのようにすれば、デフォルトの場所を設定できるのでしょうか?

A: NavDialogRun() を呼び出した後、できるだけ早い段階で、NavCustomControl を呼び出して kNavCtlSetLocation メッセージを渡すだけで済みます。一番良い方法は、 Event Proc において kNavCBStart セレクタを取得したときにこのコードを含めることです。次のソースコードでその方法を示します。



 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 ...}
      }
    ...
    }
  ...
  }

リスト 1  Event Proc の kNavCBStart セレクタでデフォルトの場所を設定




[2002 年 6 月 1 日]