IMAPIFolder::CreateFolder
適用対象: Outlook 2013 | Outlook 2016
新しいサブフォルダーを作成します。
HRESULT CreateFolder(
ULONG ulFolderType,
LPSTR lpszFolderName,
LPSTR lpszFolderComment,
LPCIID lpInterface,
ULONG ulFlags,
LPMAPIFOLDER FAR * lppFolder
);
パラメーター
ulFolderType
[in]作成するフォルダーの種類。 次のフラグを設定できます。
FOLDER_GENERIC
汎用フォルダーを作成する必要があります。
FOLDER_SEARCH
検索結果フォルダーを作成する必要があります。
lpszFolderName
[in]新しいフォルダーの名前を含む文字列へのポインター。 この名前は、新しいフォルダーの PR_DISPLAY_NAME (PidTagDisplayName) プロパティの基になります。
lpszFolderComment
[in]新しいフォルダーに関連付けられたコメントを含む文字列へのポインター。 この文字列は、新しいフォルダーの PR_COMMENT (PidTagComment) プロパティの値になります。 NULL が渡された場合、フォルダーには最初のコメントはありません。
lpInterface
[in]新しいフォルダーへのアクセスに使用するインターフェイスを表すインターフェイス識別子 (IID) へのポインター。 NULL を渡すと、メッセージ ストア プロバイダーは標準フォルダー インターフェイス IMAPIFolder : IMAPIContainer を返します。 クライアントは NULL を渡す必要があります。 他の呼び出し元は、 lpInterface パラメーターをIID_IUnknown、IID_IMAPIProp、IID_IMAPIContainer、またはIID_IMAPIFolderに設定できます。
ulFlags
[in]フォルダーの作成方法を制御するフラグのビットマスク。 次のフラグを設定できます。
MAPI_DEFERRED_ERRORS
呼び出し元のクライアントが新しいフォルダーを完全に使用できるようになる前に、 CreateFolder が正常に返されるようにします。 新しいフォルダーを使用できない場合は、後続の呼び出しを行うとエラーが発生する可能性があります。
MAPI_UNICODE
フォルダーの名前は Unicode 形式です。 MAPI_UNICODE フラグが設定されていない場合、フォルダー名は ANSI 形式です。
OPEN_IF_EXISTS
lpszFolderName パラメーターにという名前のフォルダーが既に存在する場合でも、その名前を持つ既存のフォルダーを開いて、メソッドを成功させることができます。 兄弟フォルダーに同じ名前を付けることを許可するメッセージ ストア プロバイダーは、指定された名前を持つ複数のフォルダーが存在する場合、既存のフォルダーを開かない可能性があることに注意してください。
lppFolder
[out]新しく作成されたフォルダーへのポインターへのポインター。
戻り値
S_OK
OPEN_IF_EXISTS フラグが設定されている場合、新しいフォルダーが正常に作成または開かれました。
MAPI_E_BAD_CHARWIDTH
MAPI_UNICODE フラグが設定され、実装で Unicode がサポートされていないか、MAPI_UNICODEが設定されておらず、実装で Unicode のみがサポートされています。
MAPI_E_COLLISION
lpszFolderName パラメーターに指定された名前を持つフォルダーが既に存在します。 フォルダー名は一意である必要があります。
注釈
IMAPIFolder::CreateFolder メソッドは、現在のフォルダーにサブフォルダーを作成し、エントリ識別子を新しいフォルダーに割り当てます。
呼び出し側への注意
CreateFolder から戻るときに、新しいフォルダーのエントリ識別子が使用できない可能性があることに注意してください。 一部のメッセージ ストア プロバイダーでは、新しいフォルダーの IMAPIProp::SaveChanges メソッドを呼び出して完全に保存するまで、エントリ識別子を使用できません。 これは、MAPI_DEFERRED_ERRORS フラグを設定した場合に特に当てはまります。
一部のメッセージ ストア プロバイダーは、lpInterface パラメーターに渡す値に関係なく、常に lppFolder パラメーターをフォルダーの標準インターフェイスにポイントしていることに注意してください。 返されるインターフェイス ポインターが予期した型ではない可能性があるため、新しいフォルダーの IMAPIProp::GetProps メソッドを呼び出して 、PR_OBJECT_TYPE (PidTagObjectType) プロパティを取得します。 必要に応じて、他の呼び出しを行う前に、ポインターをより適切な型にキャストします。
ほとんどのメッセージ ストア プロバイダーでは、新しいフォルダーの名前が、その兄弟フォルダーの名前に関して一意である必要があります。 このルールに従っていない場合に返されるMAPI_E_COLLISIONエラー値を処理できます。
新しく作成されたフォルダーのエントリ識別子を確認するには、新しいフォルダーの IMAPIProp::GetProps メソッドを呼び出して 、そのPR_ENTRYID (PidTagEntryId) プロパティを取得します。
MFCMAPI リファレンス
MFCMAPI のサンプル コードについては、次の表を参照してください。
ファイル | 関数 | コメント |
---|---|---|
MsgStoreDlg.cpp |
CMsgStoreDlg::OnCreateSubFolder |
MFCMAPI では 、CMsgStoreDlg::OnCreateSubFolder メソッドを使用して、MFCMAPI に新しいフォルダーを作成します。 |