更改DDBox_Text()的MessageBox标题

时间:2014-11-18 11:29:06

标签: c++ visual-c++ mfc

验证的标题与项目标题相同时显示的消息框。 我搜索了MSDN并在谷歌中更改了DDX_Text()的消息框标题。

以下是代码段表单

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

    DDX_Text(pDX, IDC_POWER_TXT_IGNITION_OFF_DELAY, delayOffWhenIgnitionIsOff);
}

当用户尝试删除文本框中的数据时,他将显示一个消息Box

enter image description here

以应用程序名称作为标题。 如何更改消息框的标题以保持功能相同?

2 个答案:

答案 0 :(得分: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自动化也将返回已更改的应用程序标题。

答案 1 :(得分:-1)

只需在MessageBox参数中设置标题。

CString v1_sMessageToDisplay;
v1_sMessageToDisplay.Format(_T("Saved Successfully to C:/IniGui/"));
MessageBox(v1_sMessageToDisplay, _T("Your Caption"), MB_ICONINFORMATION);