タイトル【Carbon化シリーズ】Navigation Serviceに対応(2)-プログラムリストカテゴリーCarbon/CF, Carbon化
作成日2000/6/10 16:15:20作成者新居雅行
void DoOpenCommand()
{
    OSErr          er;
    NavReplyRecord    reply;
    NavDialogOptions   dialogOptions;
    NavTypeListHandle  typeList;
    Point              dialogPosition = {-1,-1};

    typeList = (NavTypeListHandle)GetResource(’open’, 128);
        // openリソースをそのまま利用する
//シングルクォーテーションは半角で入力してください

    dialogOptions.version = kNavDialogOptionsVersion;
        //このメンバにはきめられた定数を設定
    dialogOptions.dialogOptionFlags = kNavDefaultNavDlogOptions;
        //ダイアログの各種設定
    dialogOptions.location = dialogPosition; 
        //ダイアログボックスの位置
    CopyCString(dialogOptions.clientName, (unsigned char*)"TextDraw IV - Carbonized");
        //クライアント名 
    CopyCString(dialogOptions.windowTitle, (unsigned char*)"ファイルを開く"); 
        //タイトルバーの文字列
    CopyCString(dialogOptions.actionButtonLabel, (unsigned char*)"開く");  //ボタン名
    CopyCString(dialogOptions.cancelButtonLabel, (unsigned char*)"なにもしない");   //ボタン名
    CopyCString(dialogOptions.savedFileName, (unsigned char*)"12345"); 
        //保存ファイル名の既定値
    CopyCString(dialogOptions.message, (unsigned char*)"複数のファイルを選択することもできます"); 
        //メッセージ
    dialogOptions.preferenceKey = NULL; 
        //プリファレンスを使わないならNULLL
    dialogOptions.popupExtension = NULL;
        //ポップアップメニューを拡張しないならNULL

    er = NavChooseFile (NULL, &reply, &dialogOptions, NULL, NULL, NULL, typeList, NULL);
        //ダイアログボックスを表示
    if(er == noErr && reply.validRecord)    {   //ファイル選択が行われたなら
        long  count, index;
        er = AECountItems(&(reply.selection), &count);  //選択されたファイルの個数を得る
        if ( er == noErr) {
            for (index = 1; index <= count; index++)  {    //1つ1つのファイルを取得する
               AEKeyword     theKeyword;
               DescType       actualType;
               Size            actualSize;
               FSSpec         documentFSSpec;

               er = AEGetNthPtr(&(reply.selection), index, typeFSS, &theKeyword,
                   &actualType,&documentFSSpec, sizeof(FSSpec), &actualSize);
               if (er == noErr)
                   LoadFromFile(&documentFSSpec);   //ファイルを開く
            }
        }
        er = NavDisposeReply(&reply);
        ReleaseResource((Handle)typeList);
    }
}
関連リンク