首页 > 其他分享 >MFC 无按钮消息提示框

MFC 无按钮消息提示框

时间:2024-05-24 17:53:40浏览次数:8  
标签:MFC 对话框 添加 ShowText 按钮 msgboxDlg 提示框

一、背景
MFC里的消息提示框(MessageBox)是带按钮的,比如:MB_OK,MB_OKCANCEL,MB_YESNO,不支持无按钮的情况。

二、方案
通过建立一个非模态对话框(不会阻塞程序往下运行),并在里面添加一个静态文本框(设置只读属性),然后将要提示的内容设置给这个文本框,将标题设置给对话框,再居中显示这个对话框就能实现无按钮消息提示框

三、实现

  1. 新建无按钮消息提示对话框

  2. 给这个对话框添加对应的类

  3. 给静态文本库添加对应的CEdit变量

  4. 添加修改静态文本内容的函数

int CDiagMessageBox::SetShowText(CString ShowText)
{
	m_ShowText = ShowText;
	UpdateData(FALSE);
	UpdateWindow();
	return 0;
}
  1. 在主窗口里添加这个提示框的对象,并且添加对应的消息提示框显示函数
  • 在CMainDlg.h里定义无按钮类型:
    //系统按钮用到0x00000006L
    #define MB_NOBUTTON 0x00000007L

  • CMainDlg类里面添加:

private:
CDiagMessageBox msgboxDlg;
public:
UINT ShowMessageBox(LPCTSTR ShowText, LPCTSTR Title, UINT nType);
  • CMainDlg.cpp里添加:
UINT CMainDlg::ShowMessageBox(LPCTSTR ShowText, LPCTSTR Title, UINT nType)
{

	if (nType == MB_NOBUTTON)//无按钮提示框
	{
		msgboxDlg.Create(IDD_DIALOG_MSG_BOX);//非模态对话框
		msgboxDlg.SetWindowText(Title);
		msgboxDlg.CenterWindow();//居中显示
		msgboxDlg.ShowWindow(SW_SHOWNORMAL);
		msgboxDlg.SetShowText(ShowText);
		return 0;
	}
	else//有按钮提示框用MessageBox
	{
		msgboxDlg.DestroyWindow();//销毁无按钮提示框
		return MessageBox(ShowText,Title,nType);
	}

} 
  1. 调用ShowMessageBox,效果如下:

四、问题
提示文本开头多了1个竖线,暂时不知道原因,猜测是某个属性没设置好。

标签:MFC,对话框,添加,ShowText,按钮,msgboxDlg,提示框
From: https://www.cnblogs.com/luhongwei168/p/18211432

相关文章

  • uniapp实现左滑显示编辑删除按钮
     【使用时可删除不必要的内容,我就是记录一下】方法一:详细借鉴(app):http://www.aliyue.net/10130.html方法二:详细借鉴(微信小程序):https://blog.csdn.net/weixin_41579185/article/details/117747252?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-......
  • Qt 等待提示框(QPropertyAnimation)
    效果由于录制程序的原因,引起gif效果不清晰,可忽略。资源需要几张不同阶段的图标进行切换,这里使用8张。源码QPropertyAnimation动画里面并不支持旋转的属性,所以我们可以通过自定义来完成。1classMainWindow:publicCustomWindow2{3Q_OBJECT4......
  • Qt 等待提示框(QMovie)
    关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系。效果由于录制程序的原因,引起gif效果不清晰,可忽略。源码通过使用QMovie来设置动画、可以调用setSpeed()设置动画速度、start()启动动画、stop()停止动画等。1QMovi......
  • Qt 等待提示框(QTimer)
    效果资源需要几张不同阶段的图标进行切换,这里使用8张。源码QTimer通过setInterval设置100毫秒超时时间,每隔100毫秒后进行图标的更换,达到旋转效果。1MainWindow::MainWindow(QWidget*parent)2:CustomWindow(parent),3m_nIndex(1)4{5m_pLoadi......
  • Qt 之 QProgressIndicator(等待提示框)
    效果由于录制程序的原因,引起gif效果不清晰,可忽略。源码QProgressIndicator.h1#ifndefQPROGRESSINDICATOR_H2#defineQPROGRESSINDICATOR_H34#include<QWidget>5#include<QColor>67/*!8\classQProgressIndicator9\briefTheQProgres......
  • 【unity】在EditorWindow添加自定义的Toolbar按钮
    好久没写了,最近做工具,写了个EditorWindow,为了让使用者方便查看这个工具的文档,想着在导航栏加个问号按钮,点一下打开说明文档就完事~查了下unity手册,发现Unity提供了一个ShowButton 方法,用于在自定义Editor窗口的工具栏中添加自定义内容,下面是实现的例子:privateGUIStyle......
  • GridLayout 等控件来完成多行按钮操作
     第一步,在布局文件中添加一个GridLayout控件,设置它的行列数和间距等属性,例如:<GridLayoutandroid:id="@+id/grid_layout"android:layout_width="match_parent"android:layout_height="wrap_content"android:columnCount="4"andr......
  • WPF使用静态属性制作按钮样式
    <Window.Resources><!--定义样式--><Stylex:Key="CustomButtonStyle"TargetType="Button"><SetterProperty="Tag"Value="{x:Staticlocal:ButtonColorSets.Button1Colors}"/>......
  • 防止页面按钮多次点击
    onlineAssessment(item){letelderInfoMation=JSON.stringify(item)console.log('this.isNavigating',this.isNavigating)if(this.isNavigating)return;//如果正在跳转,则直接返回不执行后续操作this......
  • MFC创建树状导览 Tree Control
    CTreeCtrl*pTree=(CTreeCtrl*)GetDlgItem(IDC_TREE1);//设置图片列表//pTree->SetImageList(&m_imageList,TVSIL_NORMAL);//创建待插入的TV_INSERTSTRUCT结构TV_INSERTSTRUCTtvinsert;tvinsert.hParent=NULL; //无父结点tvinsert.hInsertAfter=TVI_LAST; //......