2013-04-20 58 views
3

MSDN上MsiProcessMessage功能DOCO顯示了這個例子:消息框使用DTF

PMSIHANDLE hInstall; 
PMSIHANDLE hRec; 
MsiProcessMessage(hInstall, 
        INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING), 
        hRec); 

這將如何在DTF使用Session.Message做些什麼呢?唯一的重載將Session.InstallMessage作爲參數。我看到MessageBoxButtons枚舉,並將兩種類型轉換爲In32並執行邏輯或,但我不知道如何將其返回到API中。

我錯過了什麼,或者是DTF丟失了什麼?

回答

3

我沒有做什麼用DTF但我的理解是,你想要的東西,如:

Session.Message(InstallMessage.Error | 
       (InstallMessage)((int)MessageButtons.AbortRetryIgnore | 
           (int)MessageIcon.Warning), 
       record); 

不是很漂亮。我已經格式化了messageType agument以更好地適應這裏的文本框。根據您的編碼準則,在代碼中進行格式化。 :)

+0

感謝羅布,它工作正常,除非我確定你的意思是MessageButtons和MessageIcon而不是MessageBoxButtons和MessageBoxIcon。看起來我不能將這些類型轉換回InstallMessage類型。 – 2013-04-21 21:47:54

+0

我沒有看到'MessageButtons'或'MessageIcon'被定義爲任何地方的枚舉。當包含'System.Windows.Forms'命名空間時,上面的代碼應該可以工作。 – 2013-04-22 15:48:14

+1

MessageButtons和MessageIcons在Microsoft.Deployment.WindowsInstaller中定義。它在DTF幫助文件中。幫助主題表示可以將其轉換爲MessageBoxButtons。它應該也可以說它可以轉換爲InstallMessage。 – 2013-04-22 16:29:42