Изменение заголовка MessageBox для DDX_Text ()

0

Поле сообщения, которое отображается, когда валидация имеет заголовок, аналогичный заголовку проекта. Я искал MSDN и в google для изменения заголовка окна сообщения для DDX_Text().

Ниже приведен фрагмент кода

void CPower_Module::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);

    DDX_Text(pDX, IDC_POWER_TXT_IGNITION_OFF_DELAY, delayOffWhenIgnitionIsOff);
}

Когда пользователь попытается удалить данные в текстовом поле, ему будет показано сообщение Box as

Изображение 174551

с именем приложения в качестве заголовка. Как изменить заголовок окна сообщения, поддерживающего эту функциональность?

Теги:
visual-c++
mfc

2 ответа

2
Лучший ответ

Вызывается внутренне AfxMessageBox. Эта функция всегда использует заголовок приложения как заголовок для окна сообщения. Значение сохраняется в CWinApp :: m_pszAppname. Это всего лишь LPCTSTR.

Просто создайте такой класс.

class CChangeAppTitle
{
public:
  CChangeAppTitle(LPCTSTR pszNewTitle)
    : m_strTitle(pszNewTitle)
    , m_pszOldTitle(AfxGetApp()->m_pszAppTitle)
  {
    AfxGetApp()->m_pszAppTitle = m_strTitle;
  }
  ~CChangeAppTitle()
  {
    AfxGetApp()->m_pszAppTitle = m_pszOldTitle;
  }
private:
   CString m_strTitle;
  LPCTSTR m_pszOldTitle;
};

В DoDataExchange или перед вызовом UpdateData просто активируйте класс:

{ 
   CChangeAppTitle appTitle(_T("my app title");
   UpdateData();
...

Имейте в виду, что все окна сообщений, которые я инициировал таймером, пока этот диалог открыт, покажут новое название приложения. Также активна автоматизация COM, активированная во время этого класса, также возвращает измененный заголовок приложения.

  • 0
    Любая идея о том, как изменить значок, показанный в окне сообщения? Он показывает значок предупреждения, могу ли я изменить его на значок ошибки?
  • 0
    Если вы хотите больше контролировать DDX, напишите свои собственные процедуры DDX. Вы обнаружите, что код в процедурах MFC и DDX на самом деле не скомпилирован.
0

Просто установите подпись в параметре MessageBox.

CString v1_sMessageToDisplay;
v1_sMessageToDisplay.Format(_T("Saved Successfully to C:/IniGui/"));
MessageBox(v1_sMessageToDisplay, _T("Your Caption"), MB_ICONINFORMATION);
  • 0
    Не имеет отношения к вопросу. Он не пишет код, который вызывает MessageBox . Библиотека делает это внутренне.
  • 0
    но когда я искал решение, я не получил никакой помощи. возможно, кто-то также будет искать решение, которое имеет отношение к моему коду. тогда мой код будет ему полезен. Я думаю, что вы поняли. не надо понижать голос. Я пытаюсь помочь другим людям.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню