Здравствуйте, SergeL, Вы писали:
SL>Есть диалговое окно MessageBox, в нем содержатся описание собыия и некоторые инструкции для пользователя, что делать. Что-то вроде "если так, то нажмите "ДА" иначе нажмите "НЕТ"". Возникла проблема, если программа запусакется в анлгийских Windows, то при установленном флаге MB_YESNO, кнопки называются не 'Да' и 'Нет', а 'Yes' и 'No'. Можно конечно получить значение LOCALEID, и хранить два варианта инструкций, но может можно как-нибудь получить из ресурсов что-ли эти 'Yes', 'No' и т.д. ?
Как вообще изменить надписи на кнопках MessageBox, я не знаю, а для частного случая проходит такой способ:
Допустим MessageBox вызывается тогда, когда активный, например, MainFrame. Вешаем на него обработчик OnActivate и пишем (для случая MB_YESNOCANCEL) приблизительно такое:
void CMainFrame::OnActivate(UINT nState, CWnd *pWndOther, BOOL bMinimized)
{
CFrameWnd::OnActivate(nState, pWndOther, bMinimized);
if ( nState!=WA_INACTIVE || !pWndOther )
return;
CWnd *pWndButton;
if ( pWndButton = pWndOther->GetDlgItem(IDYES) )
pWndButton->SetWindowText("Да");
if ( pWndButton = pWndOther->GetDlgItem(IDNO) )
pWndButton->SetWindowText("Нет");
if ( pWndButton = pWndOther->GetDlgItem(IDCANCEL) )
pWndButton->SetWindowText("На фиг");
}
Желательно при вызове MessageBox добавить в него стиль MB_SETFOREGROUND:
AfxMessageBox("бла-бла-бла", MB_YESNOCANCEL|MB_ICONQUESTION|MB_SETFOREGROUND);