开始时,如果有更新,则下载并替换运行时包。如果其中一个正在使用中,则会显示允许用户重试或取消的对话框窗口(使用MessageDlg)。显示对话框时,尚未创建任何表单,并且应用程序图标在任务栏中不可见。 我可以创建一个自定义对话框表单并覆盖CreateParams过程(在这里Force application to show TaskBar Icon during OnCreate procedure),但我想知道我是否可以使用标准对话框消息做同样的事情。
其他信息: 在"(Win32MajorVersion> = 6)和UseLatestCommonDialogs和ThemeServices.ThemesEnabled"如果为False,则MessageDlg将对话框创建为TMessageForm(从TForm继承)。如果条件结果为True,则执行以下函数:
var
_TaskDialogIndirect: function(const pTaskConfig: TTaskDialogConfig;
pnButton: PInteger; pnRadioButton: PInteger;
pfVerificationFlagChecked: PBOOL): HRESULT; stdcall;
_TaskDialog: function(hwndParent: HWND; hInstance: HINST;
pszWindowTitle: LPCWSTR; pszMainInstruction: LPCWSTR; pszContent: LPCWSTR;
dwCommonButtons: DWORD; pszIcon: LPCWSTR; pnButton: PInteger): HRESULT; stdcall;
function TaskDialogIndirect(const pTaskConfig: TTaskDialogConfig;
pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT;
begin
if Assigned(_TaskDialogIndirect) then
Result := _TaskDialogIndirect(pTaskConfig, pnButton, pnRadioButton,
pfVerificationFlagChecked)
else
begin
InitComCtl;
Result := E_NOTIMPL;
if ComCtl32DLL <> 0 then
begin
@_TaskDialogIndirect := GetProcAddress(ComCtl32DLL, 'TaskDialogIndirect');
if Assigned(_TaskDialogIndirect) then
Result := _TaskDialogIndirect(pTaskConfig, pnButton, pnRadioButton,
pfVerificationFlagChecked)
end;
end;
end;