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); } } |