精华内容
下载资源
问答
  • 1 模态非模态对话框 由于我们这里使用按下菜单栏的选项弹出对话框,所以放在框架类中使用。注意:按下选项可以使用左键按下事件或者选项对应的处理事件。我们使用者,这点需要区分好。 ‘ 1)先在菜单栏添加对话框...

    1 模态非模态对话框

    由于我们这里使用按下菜单栏的选项弹出对话框,所以放在框架类中使用。注意:按下选项可以使用左键按下事件或者选项对应的处理事件。我们使用后者,这点需要区分好。

    1)先在菜单栏添加对话框的选项。
    在这里插入图片描述

    2)在资源视图添加对话框。
    在这里插入图片描述

    3)添加模态对话框的处理程序。
    在这里插入图片描述
    在这里插入图片描述

    4)上面创建好了模态对话框,这里开始创建非模态对话框,重复2,3步骤即可。

    5)编写模态对话框代码。

    void CMainFrame::OnDialogExecmt()
    {
    	// TODO: 在此添加命令处理程序代码
    
    	CDialog dlg(IDD_DIALOG1);
    	dlg.DoModal();//阻塞,所以模态会导致无法处理程序其它内容
    }
    

    6)编写非模态对话框代码。由于非模态对话框一直存在,但是对应的局部变量被释放了,所以会出现问题,我们需要使用成员变量,并且放在框架的OnCreate创建,否则第二次再创建就会出问题。

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
    
    	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    	{
    		TRACE0("未能创建工具栏\n");
    		return -1;      // 未能创建
    	}
    
    	if (!m_wndStatusBar.Create(this))
    	{
    		TRACE0("未能创建状态栏\n");
    		return -1;      // 未能创建
    	}
    	m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
    
    	// TODO: 如果不需要可停靠工具栏,则删除这三行
    	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    	EnableDocking(CBRS_ALIGN_ANY);
    	DockControlBar(&m_wndToolBar);
    
    	//实际就这一句,上面都是系统创建的代码
    	m_dlg.Create(IDD_DIALOG2);
    
    
    	return 0;
    }
    
    void CMainFrame::OnDialogShowfmt()
    {
    	// TODO: 在此添加命令处理程序代码
    
    	m_dlg.ShowWindow(SW_NORMAL);
    }
    

    7)结果。
    模态对话框结果:
    在这里插入图片描述

    非模态对话框结果,可以看到我们可以操作其本身窗口,而不需要先关闭对话框,而模态只能关闭对话框才能继续操作窗口本身。在这里插入图片描述

    2 自定义对话框

    1)按下图操作。
    在这里插入图片描述
    此时操作完成后可以在类视图中看到MyDialog类。

    2)添加刚刚自定义的对话框与菜单栏相关联。
    在这里插入图片描述

    3)编写代码。右击菜单栏中的自定义对话框选项,点击处理事件,然后就会弹出下面的函数,前面已经说过,不再多说。

    void CMainFrame::OnDialogMydialog()
    {
    	// TODO: 在此添加命令处理程序代码
    	CDialog dlg(IDD_DIALOG3);
    	dlg.DoModal();
    }
    
    

    结果,正常显示,大家可以按照自己的方法处理程序。
    在这里插入图片描述

    展开全文
  • 我在非模态对话框上放置了一个picture控件和一些MFC的Edit及Button控件,但是我使用下面的函数刷新 Invalidate(); UpdateWindow();   竟然不能刷新   后面发现是: BOOL OnEraseBkgnd(CDC* pDC) {  // ...

    我在非模态对话框上放置了一个picture控件和一些MFC的Edit及Button控件,但是我使用下面的函数刷新

    Invalidate();

    UpdateWindow();

     

    竟然不能刷新

     

    后面发现是:

    BOOL OnEraseBkgnd(CDC* pDC)
    {
     // TODO: 在此添加消息处理程序代码和/或调用默认值
     
     return  FALSE;
    }

     

    这里出了问题,我将这个函数直接返回FALSE了,造成背景不能刷新,但是把函数改回去后,

    BOOL OnEraseBkgnd(CDC* pDC)
    {
     // TODO: 在此添加消息处理程序代码和/或调用默认值
     
     return CDialog::OnEraseBkgnd(pDC);
    }

     

    背景是能够刷新了,但是我在picture控件上画矩形,有闪烁现象,暂时未解决,网上搜了下,使用双缓冲,接着测试。

     

    后面我没有采用双缓冲,直接将画矩形的代码代码放在


     pWnd->Invalidate();
     pWnd->UpdateWindow();

    后面,就不闪烁了。

    展开全文
  • 3、因为幽默的缓存原因,如果你在模态窗口中修改了数据,你会发现,父页面上的数据刷新了,但是当你再点击按钮,重新弹出模态窗口时,你会发现模态窗口中的内容还是上次的内容,经过我试验,手动改了html代码,...
  • 在MFC单文档Ribbon界面添加按钮,点击打开对话框,对话框打开关闭,再打开中断1、在单文档程序中添加模态对话框: a. 资源视图/Dialog 右键插入Dialog b. 类视图/项目名右键类向导,添加新对话框类(基类...

    出现的问题:
    在MFC单文档Ribbon界面添加按钮,点击打开对话框,对话框打开关闭后,再打开中断

    1、在单文档程序中添加模态对话框:
    a. 资源视图/Dialog 右键插入Dialog
    b. 类视图/项目名右键类向导,添加新对话框类(基类CDialogEx)
    c. 资源视图/Ribbon添加类别、面板以及按钮,右键按钮添加事件处理程序,类列表选择CMainFrame(教程)
    d. 在事件响应函数OnBeginDialog()(按钮ID为BeginDialog)添加

    CUDPCliDDlg clidlg;
    clidlg.DoModal();
    

    2、非模态对话框动态创建:

        OnBeginDialog()
        {
            CUDPCliDDlg * pClidlg= new CUDPCliDDlg(); //给指针分配内存
            pClidlg->Create(IDD_CLIENT); //创建一个非模态对话框  
            pClidlg->ShowWindow(SW_SHOWNORMAL); 
        }
        void CUDPCliDDlg::PostNcDestroy()
        {
            // TODO: 在此添加专用代码和/或调用基类
            delete this;
            CDialogEx::PostNcDestroy();
        }
        void CUDPCliDDlg::OnCancel()
        {
            // TODO: 在此添加专用代码和/或调用基类
            DestroyWindow();
            //CDialogEx::OnCancel();
        }
    

    1、模态对话框,调用DoModal函数显示对话框时,程序会暂停执行,知道模态对话框关闭之后才继续执行。即,当模态对话框显示时,局部变量dlg对象的生命周期并未结束。

    2、非模态对话框,创建非模态对话框时,如果把对话框对象定义为局部变量dlg,程序依次执行,OnBeginDialog()执行完毕,则dlg释放。因此,两种方法:将对话框对象定义为成员变量;定义为指针(局部),在堆上分配内存。释放内存:前者在析构函数中delete,后者在Dlg类中重载PostNcDestroy,delete this;

    单击【OK】,模态对话框对象被销毁,而非模态对话框并未销毁,只是隐藏了。

    在非模态对话框中单击OK,程序调用基类的OnOK函数调用EndDialog函数,此函数用于终止模态对话框、隐藏非模态对话框(不销毁)。因此,如果有IDOK(IDCANCEL),则重写基类OnOK(OnCancel),在OnOK中调用DestroyWindow来销毁对话框,同时注释掉基类的OnOK(OnCancel)。

    展开全文
  • 创建非模态子窗口: 打开一个子窗口,再次点击打开按钮不创建新的窗口。 void CtestSubWinDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 static mySubWin *my_subWin =new mySubWin;//...

    mySubWin是子窗口类

    创建非模态子窗口:
    打开一个子窗口后,再次点击打开按钮不创建新的窗口。

    void CtestSubWinDlg::OnBnClickedButton1()
    {
    	// TODO: 在此添加控件通知处理程序代码
    
    	static mySubWin	*my_subWin =new mySubWin;//必须是static,否则点击一次按钮创建一个窗口
    
    	HWND hWnd = my_subWin->GetSafeHwnd();
    	if (IsWindow(hWnd))//如果窗口已经打开,则不创建窗口,直接显示
    	{
    		my_subWin->ShowWindow(SW_SHOW);
    	}
    	else
    	{
    		my_subWin->Create(IDD_DIALOG1,this);//子界面创建
    		my_subWin->ShowWindow(SW_SHOW);//点击按钮显示界面
    	}
    }
    

    创建模态子窗口:

    void CtestSubWinDlg::OnBnClickedButton2()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	
    	 mySubWin my_subWin;
    	 my_subWin.DoModal();//显示模态窗口
    }
    
    展开全文
  • 按钮的默认处理是OnOk,此函数是虚函数,如果没有重载它,会调用CDialog::OnOk的实现,实现很简单,主要有两处调用,即:CDialog::UpdateData和CDialog::EndDialog,前者用于数据的交换和验证,者,它首先检测当前...
  • Windows应用程序工作的基本流程是从用户那里得到数据,经过相应的处理之后,再把...对话框基本认识常用控件介绍对话框的种类模态对话框非模态对话框对话框的新建和显示模态对话框的创建非模态对话框的创建 对话框...
  • Windows是一个巨大的消息驱动结构,由用户发出消息,系统响应处理。windows的消息机制:Windows是一种面向对象的体系结构,Windows环境和应用程序都是通过消息来交互的。Windows应用程序开始执行,Windows为该程序...
  • 在自动化测试过程中发现点击某个按钮弹出了一个特别的窗口。 特点一,该窗口不关闭就无法切换到其他窗口。 特点二,该窗口无法使用开发人员工具进行探测。   ...这个特别的窗口就是模态窗口: ...非模态对话框则不会
  • MFC创建非模态对话框

    千次阅读 2019-06-04 14:15:59
    对象abc在栈上,该消息处理函数调用结束返回,对象abc销毁,也即非模态对话框销毁 解决办法 创建为全局变量或定义到该按钮所属类中(作为该类的成员变量) 引出问题 按照上例方式,解决上面的问题,有...
  • 但对于非模态对话框资源的释放就没这么直接,原因: (1) 它是在堆上创建的。(2) 在当前的使用函数内是不能直接用delete删除的。经过查资料才了解怎么样处理,对非模式对话框做了些总结如下:A. 如何创建非模式...
  • 非模态对话框失去焦点销毁对话框?这里响应ON_WM_ACTIVATE()事件,对应的消息处理函数为:afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);nState有三种状态:WA_INACTIVE The window is ...
  • 非模态(Modeless)对话框,又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。例如,Windows提供的... 非模态对话框允许用户在处理非模态对话框的同时处理目标对话框。其不会垄断用户的输入...
  • 现在想做出非模态窗口的效果,在查阅了官方文档并没找出方法,唯一可以替代使用的是dojox.layout.floatpanel部件。 没有示例和文档的参考,只好再去看源码和调度,最后找出一个可以解决的处理方案。 ...
  • 1.响应WM_ACTIVE消息,当state ==...但要注意,调用DestroyWindow引起系统又反复产生WM_ACTIVE消息,所以要保证该处理只调用一次 然后,响应PostNcDestroy,关调用 delete this; 为了窗口能接收到WM_ACTIVE
  • 由于非模态对话框的自己没有消息循环,创建无法进行消息处理。需要和父窗口共用消息循环。如果单独在子窗口进行控件由于自己没有单独的消息循环,更新是无法进行的。 如果在父窗口更新控件会造成程序假死。如以下...
  • 但是弹出窗口的功能绝不仅限于此,例如:做一个类似于百度搜索提示框的小组件,一个设计的思路就是组件上面是一个文本框,输入关键字在文本框下面弹出一个查询结果列表(非模态窗口),点击列表之外的任何组件都要...
  • 浅谈VMD(变分模态分解)

    万次阅读 多人点赞 2019-12-02 11:41:40
    新的自适应信号处理方法,对平稳、线性信号具有良好处理效果。 文章说明 因为最近论文需要用到VMD,所以看了几篇关于VMD的论文,VMD在2014年提出,所以其论文比较新,而且知网上的论文都是基于VMD的应用,里面的...
  • 作者:刘秀丽,徐小力,吴国新,张雪英摘要:针对从线性平稳动态信号中提取故障敏感特征困难的问题,提出一种变分模态分解(VMD)与小波分析方法相结合的振动信号预处理方法.首先对信号进行VMD,然后采用改进小波...
  • 对于模态对话框DoModal出来的,删除对话框时用cdialog::onok()或者cdialog::oncancle(),这些函数调用之后并没有删除对话框,而是设置了操作系统对话框的结束标志,当操作系统检测到这个标志,就结束该...
  • Qt实现一个类似qq的公共信息提示框 需求要点: 单例模式 半透明 自动消失 与消失动画 ...添加如下代码就可以了: this->setAutoFillBackground(true); //但结果表明没有效果 所以我直接使用
  • 为了抑制陀螺仪的线性、平稳噪声,提出了一种改进的基于集合经验模态分解(EEMD)的降噪方法EEMD-M。首先,通过EEMD阈值滤波得到信息主导和噪声主导的固有模态函数(IMF)分量;将EEMD应用于第一次阈值滤波中被丢弃的...
  • 具体实现过程上述模态参数识别算法的具体实现过程如图3-1所示分三步:数据前处理(包括 NExT)、ERA 核心识别算法和识别后处理。1 识别虚假模态的方法 由于噪声干扰及功率谱计算误差的存在,造成在结构频点对应的...
  • 其实直接在labview采集数据进行频谱分析是最方便的,但是labview的...经验模态分解(emd)适合处理非线性平稳信号,他将信号分解成不同成分,这些成分可以是幅值调制或者频率调制得,其分解基于一定假设,比如信...
  • 对于新来的测试样本数据统计差分处理后,向LPP模型上进行投影,计算新数据的T2统计量并与控制限比较进行故障检测。最后通过半导体过程数据的仿真结果表明,该算法的故障检测效果最好,验证了所提方法的有效性。
  • 其实直接在labview采集数据进行频谱分析是最方便的,但是labview的...经验模态分解(emd)适合处理非线性平稳信号,他将信号分解成不同成分,这些成分可以是幅值调制或者频率调制得,其分解基于一定假设,比如信...
  • 二维经验模态分解(Bidimensional Empirical Mode Decompositio,BEMD)是一种优秀的多尺度几何分析工具,特别适用于线性、平稳信号的分析处理。以BEMD与新型隐马尔可夫树(Hidden Markov Tree,HMT)模型理论为...
  • // TODO: 在此添加控件通知处理程序代码 //弹出模态对话框 有阻塞功能可以顺利弹出 //首先给要弹出的窗口添加一个类,会自动生成该窗口的.cpp和.h文件 //1.要弹出对话框,首先要知道对话框属于哪个类,属于的类...
  • 如果遇到了,说明你在非模态窗口中对文件进行了操作,相应的处理方法是在操作前将文档锁定。 具体类似于这样: acDocManager->lockDocument(acDocManager->curDocument()); //..... acDocManager->unlockDocument
  • Qt 遮罩层,等待后台处理动画效果

    千次阅读 2020-10-30 09:17:57
    并且窗口大小变化时,自动适应界面变化,不阻塞窗口移动和放大缩小,非模态的。 不是C#里面那种窗口截图的烂效果,真遮罩,真背景半透明。 需要配合多线程使用,前台显示等待界面,后台线程处理数据,当处理完毕,...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 134
精华内容 53
关键字:

后处理模态非模态