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 メソッドを参照してください。