次の方法で共有


IPersistMessage::InitNew

適用対象: Outlook 2013 | Outlook 2016

新しいメッセージを初期化します。

HRESULT InitNew(
  LPMAPIMESSAGESITE pMessageSite,
  LPMESSAGE pMessage
);

パラメーター

pMessageSite

[in]ビューアーでメッセージを操作するためにフォームが使用するメッセージ サイトへのポインター。

pMessage

[in]新しいメッセージへのポインター。

戻り値

S_OK

新しいメッセージが正常に初期化されました。

注釈

フォーム ビューアーは、ユーザーがフォームで処理するメッセージ クラスに属する新しいメッセージを書き込むと、 IPersistMessage::InitNew メソッドを呼び出します。 フォーム オブジェクトに有効なユーザー インターフェイス ポインターがある場合は、メッセージ オブジェクトのユーザー インターフェイスを表示する必要があります。

初期化されていない状態以外の状態のフォームでは、InitNew を呼び出さないでください。 InitNew が呼び出されたときにフォームが他のいずれかの状態にある場合は、E_UNEXPECTEDを返します。

実装に関するメモ

通常、未保存のプロパティを持つメッセージは、クライアントがこれらのプロパティを保存するかどうかをユーザーに求めるダイアログ ボックスを表示できるように変更済みとしてマークされます。 ユーザーがメッセージを保存する必要があることを示す場合は、データを保存し、メッセージをクリーンとしてマークし、正常に終了します。

ただし、新しく初期化されたメッセージの処理に 1 つ以上の計算プロパティの設定が含まれており、それらのプロパティを保存することが重要な場合は、メッセージを変更済みとしてマークしないでください。 計算されたプロパティはユーザーには表示されないため、ダイアログ ボックスは表示されません。

フォームに InitNew に渡される以外のアクティブなメッセージ サイトへの参照がある場合は、元のサイトが使用されなくなるため、元のサイトを解放します。 pMessageSite パラメーターと pMessageパラメーターからメッセージ サイトとメッセージへのポインターを格納し、両方のオブジェクトの IUnknown::AddRef メソッドを呼び出して参照カウントをインクリメントします。

新しいメッセージの PR_MESSAGE_FLAGS (PidTagMessageFlags) プロパティと PR_MSG_STATUS (PidTagMessageStatus) プロパティを、メッセージ クラスに適したプロパティに設定します。 たとえば、多くのメッセージ クラスでは、 PR_MESSAGE_FLAGSを新 しいメッセージのMSGFLAG_UNSENTに設定します。

戻る前に、エラーが発生していない場合は、フォームを 標準 状態に切り替えます。 IMAPIViewAdviseSink::OnNewMessage メソッドを呼び出して、登録されているすべてのビューアーに新しいメッセージ通知を送信し、S_OKを返します。

呼び出し側への注意

InitNew を正常に呼び出した後は、次の必須プロパティと、その他のプロパティがフォームに設定されていないと仮定できます。

PR_DELETE_AFTER_SUBMIT (PidTagDeleteAfterSubmit)

PR_IMPORTANCE (PidTagImportance)

PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED (PidTagOriginatorDeliveryReportRequested)

PR_PRIORITY (PidTagPriority)

PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested)

PR_SENSITIVITY (PidTagSensitivity)

PR_SENTMAIL_ENTRYID (PidTagSentMailEntryId)

フォームの状態の詳細については、「フォームの 状態」を参照してください。 ストレージ オブジェクトの初期化方法の詳細については、 IPersistStorage::InitNew メソッドを参照してください。

関連項目

IPersistMessage : IUnknown