首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改MessageBox的DDX_Text()标题

更改MessageBox的DDX_Text()标题
EN

Stack Overflow用户
提问于 2014-11-18 11:29:06
回答 2查看 1.4K关注 0票数 0

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

下面是代码片段表单

代码语言:javascript
复制
void CPower_Module::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);

    DDX_Text(pDX, IDC_POWER_TXT_IGNITION_OFF_DELAY, delayOffWhenIgnitionIsOff);
}

当用户尝试删除文本框中的数据时,他将被显示为

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-18 12:12:59

在内部调用AfxMessageBox。此函数总是使用应用程序标题作为消息框的标题。该值存储在CWinApp::m_pszAppname中。这只是一个LPCTSTR。

创建这样一个类就行了。

代码语言:javascript
复制
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之前,只需激活类:

代码语言:javascript
复制
{ 
   CChangeAppTitle appTitle(_T("my app title");
   UpdateData();
...

请注意,当此对话框打开时,所有由计时器启动的消息框都将显示新的应用程序标题。另外,在这个类中激活的COM自动化也将返回更改的应用程序标题。

票数 2
EN

Stack Overflow用户

发布于 2019-02-04 06:22:23

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

代码语言:javascript
复制
CString v1_sMessageToDisplay;
v1_sMessageToDisplay.Format(_T("Saved Successfully to C:/IniGui/"));
MessageBox(v1_sMessageToDisplay, _T("Your Caption"), MB_ICONINFORMATION);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26993228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档