精华内容
下载资源
问答
  • MFC隐藏对话框

    千次阅读 2014-12-31 08:52:35
    1.修改CXXAPP中的InitInstance函数,将原来的模态对话框改为非模态对话框,即修改 INT_PTR nResponse = dlg.DoModal(); 为 dlg.Create(CModalHideDlg::IDD); //创建为非模态对话框 dlg.ShowWindow(SW_HIDE); //...

    1.修改CXXAPP中的InitInstance函数,将原来的模态对话框改为非模态对话框,即修改

    1. INT_PTR nResponse = dlg.DoModal();
    1. dlg.Create(CModalHideDlg::IDD); //创建为非模态对话框
    2. dlg.ShowWindow(SW_HIDE); //创建完毕后,可以设置对话框的显示方式,正常为“SW_SHOW”,
    3. //在此,我们使用“SW_HIDE”将对话框隐藏,但是在进程列表中仍然可以看到
    4. dlg.RunModalLoop(); //消息循环

    2.改变对话框显示状况
    在对话框初始化时改变其显示属性可以让它隐藏起来。方法是调用SetWindowPlacement函数:

    BOOL CDialogExDlg::OnInitDialog()

    {

    CDialog::OnInitDialog();

    //DO something
    WINDOWPLACEMENT wp;

    wp.length=sizeof(WINDOWPLACEMENT);

    wp.flags=WPF_RESTORETOMAXIMIZED;

    wp.showCmd=SW_HIDE;

    SetWindowPlacement(&wp);

    return TRUE;

    }

     

    在需要显示时(通常是响应热键或者托盘图标的鼠标消息):


    WINDOWPLACEMENT wp;

    wp.length=sizeof(WINDOWPLACEMENT);

    wp.flags=WPF_RESTORETOMAXIMIZED;

    wp.showCmd=SW_SHOW;

    SetWindowPlacement(&wp);

     

     3.最好的方法

    第一步,声明一个响应函数afx_msg void OnNcPaint();用于阻止绘制对话框操作。将这个函数放入Dlg类的声明中,作为Dlg类的一个成员。

    第二步,注册消息WM_NCPAINT(),也就是在BEGIN_MESSAGE_MAP(Dlg,CDialog)和END_MESSAGE_MAP()之间添加ON_WM_NCPAINT()。

    第三步,OnNcPaint函数代码如下:
    void CMyDialog::OnNcPaint()
    {
    static int i = 2;
    if(i > 0)
    {

    i --;
    ShowWindow(SW_HIDE);
    }
    else
    CDialog::OnNcPaint();
    }
    OnNcPaint函数解释:程序的需求是只要窗口在初始运行时隐藏,所以定义static int i = 2;
    变量可以判断是否是首次显示窗口。之所以定义为2,是因为当程序开始运行时,系统发送(SendMessage)ON_WM_NCPAINT消息,此时程序的窗口边框应该被显示,但是此时我们没有作任何显示的操作,而是将窗口隐藏,ShowWindow(SW_HIDE)将把窗口的WS_VISIBLE属性去掉,继续执行,程序将检查WS_VISIBLE属性,如果没有则显示窗口,所以又发送了一个ON_WM_NCPAINT消息。所以我们要处理两次ON_WM_NCPAINT消息。其次,也可以定义static int i = 1;如果将i定义为1,则必须把窗口的Visible属性去掉,也就是在窗口上右键点击属性,选择More Styles,将Visible前面的勾去掉。

    有了以上三步就可以实现对话框隐藏,但在程序启动的时候,系统状态栏里会有程序的图标闪一下,这就需要再做一些工作:

    第一,在OnInitDialog()函数中添加ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);使对话框不在系统任务栏中显示。

    第二,在需要对话框显示的程序中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);使对话框显示在系统任务栏中。

     



     

     

    展开全文
  • MFC 隐藏对话框

    千次阅读 2013-09-07 16:35:57
    直接在OnInitDialog中调用ShowWindow(SW_HIDE)会导致启动的时候闪一下再隐藏 调用如下方法,不会在初始化时闪现出来 BOOL CTest6Dlg::OnInitDialog() { CDialog::OnInitDialog(); WINDOWPLACEMENT wp; wp....

    直接在OnInitDialog中调用ShowWindow(SW_HIDE)会导致启动的时候闪一下再隐藏

    调用如下方法,不会在初始化时闪现出来

    BOOL CTest6Dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    	WINDOWPLACEMENT wp;
    	wp.length=sizeof(WINDOWPLACEMENT);
    	wp.flags=WPF_RESTORETOMAXIMIZED;
    	wp.showCmd=SW_HIDE;
    	SetWindowPlacement(&wp);
    	return TRUE;
    }


    展开全文
  • 1、进入工程视图模式,修改对话框"Border"属性为"None" 此时已经去掉了边框。如果还想让对话框可拖动,则需要在工程视图模式的对话框界面右键,选择"类向导–> 消息–>WM_LBUTTONDOWN,重载函数OnLButtonDown...

    1、进入工程视图模式,修改对话框"Border"属性为"None"
    在这里插入图片描述
    此时已经去掉了边框。如果还想让对话框可拖动,则需要在工程视图模式的对话框界面右键,选择"类向导–>
    消息–>WM_LBUTTONDOWN,重载函数OnLButtonDown
    在这里插入图片描述

    修改OnLButtonDown:

    void CCTVPlugDlg::OnLButtonDown(UINT nFlags, CPoint point)
    {
    	// TODO: Add your message handler code here and/or call default
    
    	CDialogEx::OnLButtonDown(nFlags, point);
    	PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));//使窗口可拖动
    }
    

    最后效果
    在这里插入图片描述

    展开全文
  • 在 BOOL CMFCApplication3App::InitInstance(){ 中 找 INT_PTR nResponse = dlg.DoModal();改为 dlg.Create(CMFCApplication3Dlg::IDD); //创建为非模态对话框 ... //创建完毕后,可以设置对话框
    在    BOOL CMFCApplication3App::InitInstance(){
    
             中 找 INT_PTR nResponse = dlg.DoModal();改为  
            dlg.Create(CMFCApplication3Dlg::IDD); //创建为非模态对话框 
    	dlg.ShowWindow(SW_HIDE); //创建完毕后,可以设置对话框的显示方式,正常为“SW_SHOW”, 
    	//在此,我们使用“SW_HIDE”将对话框隐藏,但是在进程列表中仍然可以看到 
    	dlg.RunModalLoop(); //消息循环
    }

    展开全文
  • CMFC_NotifyIconDlg 是一个单对话框的程序,现在想要隐藏他,使用了下面的代码(网上搜的), 发现窗体隐藏了,但是任务栏的图标还在,查了MSDN,ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); 这句就可以隐藏...
  • MFC隐藏对话框的状态栏

    千次阅读 2012-11-02 11:29:03
    第一,在OnInitDialog()函数中添加ModifyStyleEx(WS_EX_APP...使对话框不在系统任务栏中显示。  第二,在需要对话框显示的程序中添加ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);使对话框显示在系统任务栏中。
  • MFC模态对话框和非模态对话框

    万次阅读 多人点赞 2011-08-31 15:54:21
    MFC对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法...
  • mfc创建隐藏对话框

    千次阅读 2019-01-07 14:30:56
    通常有需求mfc对话框创建一个子对话框(弹出式的对话框),但是弹出对话框必须要隐藏起来,等需要显示的时候才显示。尝试过在创建弹出对话框后调用ShowWindow(SW_HIDE);函数实现,但是界面始终会闪烁一下。网上...
  • vs2010,MFC软件打开时隐藏对话框,首先显示一个登陆界面,登录界面关闭之后显示主对话框。存在的问题,隐藏对话框对话框会闪现一下,还需完善
  • MFC 模态对话框和非模态对话框
  • 有很多应用程序要求一起动就隐藏起来,这些程序多作为后台程序运行,希望不影响其他窗口,往往只在托盘区显示一个图标。...这样看来,对话框在使用方法上面是隐藏了不少细节的,其中就没有SDI、MDI所要求的Sh
  • MFC扩展对话框

    2015-02-27 15:43:49
    这个功能类似QQ的显示聊天记录 当用户要显示一些过多的选择时,对话框自动扩展其大小,将隐藏的部分显示出来
  • 在启动前隐藏一个MFC DoModal对话框

    千次阅读 2015-11-03 20:19:45
    实现在启动对话框前将DoModal对话框隐藏掉 1、在对话框中添加WM_WINDOWPOSCHANGING消息处理 BEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_WM_WINDOWPOSCHANGING() END_MESSAGE_MAP() BOOL CHiddenDialog::...
  • 隐藏窗口的方法: 在对话框的OnInitDialog() 方法中加入: //Hidethewindowbody SetWindowPos(&wndNoTopMost,0,0,0,0,SWP_HIDEWINDOW); ModifyStyleEx(WS_EX_APPWI...
  • 对于基于对话框MFC程序,如果想要程序启动时就隐藏主窗口,无法在该对话框类的OnInitialDialog()函数中实现隐藏窗口的功能。但是,可以通过对话框程序响应WM_WINDOWPOSCHANGING消息来实现隐藏窗口的功能。 1 ...
  • MFC基于对话框的工程,要实现点击该对话框的某个按钮后隐藏这个对话框显示另外一个对话框,要怎么实现?
  • MFC对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。  一、模态对话框(model dialog box)  在程序运行的过程中,若出现了模态对话框,那么主窗口...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,858
精华内容 3,543
关键字:

mfc隐藏对话框