В итоге переписали метод на .Net
Глюк ядра обошли.
X++:
//pkoz 16.06.2011
// GRD_R2301_reservationMany_pkoz //pkoz 16.06.2011
// обходим глюк ядра когда в диалог попадал текст из статус бара
// [url]http://msdn.microsoft.com/ru-ru/library/6wc4zekd.aspx[/url]
public
client
//server
static DialogButton yesNo_Net(
str _text,
DialogButton _defaultButton,
str _title = "@SYS11132",
str _bottomText = '')
{
DialogButton ret;
System.Windows.Forms.MessageBoxDefaultButton NetDefaultButton;
InteropPermission interopPerm;
;
if (clientKind() == ClientType::COMObject)
return _defaultButton;
// GRD_CheckDialogInTTS("Box::yesNo_Net"); // GRD_CheckDialogInTTS_pkoz, Ловим диалоги внутри транзакции, pkoz, 17.12.2008
if( SysTaskRecorderEventManager::parmRecording() )
return SysTaskRecorderGlobal::handleDialogButton(DialogBoxType::YesNoBox, _text, _title, _bottomText, _defaultButton);
/*
return new DialogBox(DialogBoxType::YesNoBox,
_text,
_title,
_bottomText,
_defaultButton).retval();
*/
// get dll interop permission
interopPerm = new InteropPermission(InteropKind::ClrInterop);
interopPerm.assert();
if (_defaultButton == DialogButton::Yes)
{
NetDefaultButton = System.Windows.Forms.MessageBoxDefaultButton::Button1;
}
else
{
NetDefaultButton = System.Windows.Forms.MessageBoxDefaultButton::Button2;
}
if (System.Windows.Forms.DialogResult::Yes ==
System.Windows.Forms.MessageBox::Show(
_text,
_title, // для _bottomText места не нашлось - и фиг с ним
System.Windows.Forms.MessageBoxButtons::YesNo,
System.Windows.Forms.MessageBoxIcon::Question,
NetDefaultButton
)
)
{
ret = DialogButton::Yes;
}
else
{
ret = DialogButton::No;
}
return ret;
}