精华内容
下载资源
问答
  • 对话框和窗口区别

    千次阅读 2016-10-12 21:46:00
    窗口”与“对话框”有什么区别? 计算机类稿件的一大特点是文中的图很多。在这大量的图中,系统软件或应用软件的“界面”、“窗口”、“对话框”、“提示框”等的截图又占了很大的比例。其中,“窗口...

    “窗口”与“对话框”有什么区别?
     
        


                   计算机类稿件的一大特点是文中的图很多。在这大量的图中,系统软件或应用软件的“界面”、“窗口”、“对话框”、“提示框”等的截图又占了很大的比例。其中,“窗口”和“对话框”是两个极易用错的计算机术语。如果不能明确 “窗口”与“对话框”这两个词之间的区别,将会给计算机类稿件的编辑加工带来困难。下面将从定义、外观特点等方面浅谈“窗口”与“对话框”的区别。 
           一、定义 
          1.窗口的定义 
          “窗口”是屏幕上显示出来的,与一个应用程序相对应的矩形区域。屏幕中显示出窗口,表示该窗口对应的应用程序正在运行中。 
           2.对话框的定义 
          “对话框”是人机交流的一种方式,用户对对话框进行设置,计算机就会执行相应的命令。 
           二、外观特点 
           1.窗口的外观 
           窗口一般由标题栏,菜单栏,工具栏,状态栏,窗口边框,滚动条和工作区组成。点击“我的电脑”之后弹出的窗口就是计算机操作中最为典型的窗口。“我的电脑”D盘窗口如下图所示。另外,比较常见的窗口还有点击WORD快捷方式后弹出的窗口,打开IE浏览器之后弹出的窗口等。 

    窗口示例 窗口示例

      
           2.对话框的外观 
           对话框中有单选框、复选框等。点击“开始”→“运行”之后弹出的对话框就是计算机操作中最为典型的对话框。“运行”对话框如下图所示。 

    对话框示例 对话框示例


           三、具体分别 
          从某种意义上来讲,对话框可以理解为“次一级的窗口”。有些书中为了描述清楚“窗口”与“对话框”的区别进行了下面的比喻:将“窗口”比喻为容器;将“对话框”比喻为“按钮+输入框+标签+界面”的集合。这种方法可能会更加混淆“窗口”和“对话框”。其实,编辑只要掌握以下两个特别简便的方法就可以很方便地在稿件中区分“窗口”和“对话框”了。 
           区分方法一:“窗口”的“对话框”中有最小化、最大化、关闭的按钮;而“对话框”中没有最小化和最大化的按钮。因此,可以通过最大化与最小化按钮来区分“对话框”与“窗口”。 
           区分方法二:“对话框”的标题栏中通常有帮助按钮。帮助按钮就是带有“?”的按钮(见图2)。通常情况下,见到标题栏中有帮助按钮,那就基本上可以断定此为“对话框”而不是“窗口”了。 
    以上只是浅显地分析了窗口与对话框的区别,并提出了两个较为简便的区分方法。至于更为详细的“界面”、“窗口”、“对话框”、“提示框”的异同,将在今后的工作中不断总结。

    展开全文
  • 对话框窗口最大最小化

    千次阅读 2015-04-25 13:14:21
    mfc里,基于对话框窗口,具有最大最小化的属性设置。在Border属性里选择Resizing,然后在MaximizeMinimize中选择true。在窗体当中随便拖几个控件,然后运行,此时点击最大化会发现,整个窗体的大小是变大了,...

    mfc里,基于对话框的窗口,具有最大最小化的属性设置。在Border属性里选择Resizing,然后在Maximize和Minimize中选择true。在窗体当中随便拖几个控件,然后运行,此时点击最大化会发现,整个窗体的大小是变大了,但是有效区域并不会改变大小,也就是控件的大小任然不变。那么如何调整对话框中的各个控件,随窗体的大小改变而改变呢?mfc里面有一个消息WM_SIZE,这个消息能响应窗体大小改变事件。具体如何操作?

    选择类向导,搜索消息WM_SIZE,添加相应的事件处理函数void CMyDlg::OnSize(UINT nType, int cx, int cy),真正改变控件大小的函数并不是此函数,它还需要配合void CMyDlg::ChangeSize(CWnd *pWnd, int cx, int cy,bool tf) 才能进行处理。具体代码如下:

    void CMyDlg::OnSize(UINT nType, int cx, int cy)
    {
        CDialogEx::OnSize(nType, cx, cy);
    
        // TODO: 在此处添加消息处理程序代码
        if(nType==1) return;//最小化则什么都不做  
        // TODO: Add your message handler code here  
        CWnd *pWnd;    
        pWnd = GetDlgItem(IDC_STATIC_PLAYCTL);  
        ChangeSize(pWnd, cx, cy,false);  
    //  pWnd = GetDlgItem(IDC_STATIC);  
    //  ChangeSize(pWnd, cx, cy);  
        pWnd = GetDlgItem(IDC_BUTTON_LOAD);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_BUTTON_PLAY);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_BUTTON_STOP);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_BUTTON_PLAY_FORWARD);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_BUTTON_PLAY_BACKWARD);  
        ChangeSize(pWnd, cx, cy,false);   
        pWnd = GetDlgItem(IDC_STATIC_VOLUME_TEXT);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_STATIC_FILENAME);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_SLIDER_MEDIA);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd = GetDlgItem(IDC_SLIDER_VOLUME);  
        ChangeSize(pWnd, cx, cy,false);  
        pWnd=GetDlgItem(IDC_STATIC_VOLUME);
        ChangeSize(pWnd, cx, cy,false);  
        pWnd=GetDlgItem(IDC_STATIC_POSITION);
        ChangeSize(pWnd, cx, cy,false);
        pWnd=GetDlgItem(IDC_BUTTONftp);
        ChangeSize(pWnd, cx, cy,false);
    
        pWnd = GetDlgItem(IDC_STATIC_VIDEO);  
        ChangeSize(pWnd, cx, cy,true);  
    
        GetClientRect(&m_rect);// 将变化后的对话框大小设为旧大小
    
    }
    
    
    void CMyDlg::ChangeSize(CWnd *pWnd, int cx, int cy,bool tf)    //真正改变控件大小的函数,在onsize里边不断被调用
    {  
        if(pWnd)  //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建   
        {  
            CRect rect;   //获取控件变化前的大小    
            pWnd->GetWindowRect(&rect);  
            ScreenToClient(&rect);//将控件大小转换为在对话框中的区域坐标  
    
            //    cx/m_rect.Width()为对话框在横向的变化比例  
            rect.left=rect.left*cx/m_rect.Width();//调整控件大小  
            rect.right=rect.right*cx/m_rect.Width();  
            rect.top=rect.top*cy/m_rect.Height();  
            rect.bottom=rect.bottom*cy/m_rect.Height();  
            pWnd->MoveWindow(rect);//设置控件大小  
        }  
    
    }

    ok,在onsize函数里边,主要是这两句:pWnd = GetDlgItem(IDC_STATIC_PLAYCTL); ChangeSize(pWnd, cx, cy,false);,其中IDC_STATIC_PLAYCTL是我项目中的一个picture控件,利用GetDlgItem获取该控件的句柄,然后调用ChangeSize函数实现具体的调整。

    ChangeSize函数里边的代码注释也很详细,我就不解释了。这样做以后,运行发现确实能实现想要的效果。无论是最大化还是你随意的伸缩窗体,各个控件均能很良好的实现相应的调整。但是我实验的时候,由于我写的是一个播放器,中间很大一块是一个Picture控件,下面是一些控制按钮。刚开始的时候,我没有太关心onsize函数里边每个控件被调用的顺序,此时我的Picture控件不是最后一个被调用,所以最大化的时候发现当Picture控件已经最大化后,位于它之后的一些按钮控件便会在原来的位置闪烁几下,才调整到最终的位置。于是我改变了调用的顺序,将picture控件最后调用,正如代码中的那样,于是没有出现刚才的现象了。

    但是,这种方法有一个缺点,就是会闪屏。你想啊,每个控件调整自己的大小以适应新窗口的大小是有先后顺序和执行时间的。从最初的状态到最终的状态中,控件在不断变化位置,于是产生了闪屏。这是我自己的理解。好在影响不是特别大,所以更好的方法我就没有再接着找寻了。但肯定有更好的方法,如果控件太多,中间转换的时间还是很可观的。可能闪屏现象就会更严重一点。

    拙见。小记。

    展开全文
  • 易语言调整通用对话框窗口默认大小源码,调整通用对话框窗口默认大小,线程事件,FindWindow,设置窗口位置_
  • MFC学习 最大对话框窗口

    MFC学习 最大化对话框窗口

    方法一(推荐):修改OnInitDialog()函数

    在CXXXDlg.cpp中的OnInitDialog函数结构体内return TRUE代码前添加下述代码:

    ShowWindow(SW_MAXIMIZE);	// SW_MAXIMIZE = SW_SHOWMAXIMIZED

    具体如下:
    BOOL CXXXDlg::OnInitDialog()
    
    {
    
             CDialogEx::OnInitDialog();
    
             ...// 其它函数代码
    
             ShowWindow(SW_MAXIMIZE);//对话框默认最大化弹出
    
             returnTRUE;
    
    }

    方法二:修改InitInstance()函数

    在XXX.cpp中的CXXX::InitInstance函数结构体内添加下述代码:

    m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);
    m_pMainWnd->UpdateWindow();

    注意,该代码中的m_pMainWnd是在afxwin.h中申明,所以只需要调用即可,但注意上述代码的位置最好放在下述代码的后面(其实我不知道为什么,只觉得放在最后比较好,可能这个最大化功能不会被影响)
    CStitchBinocular_MFCDlg dlg;
    m_pMainWnd = &dlg;


    m_pMainWnd申明如下:
    CWnd* m_pMainWnd;       // main window (usually same AfxGetApp()->m_pMainWnd)


    备注

    1、方法一亲测可用;
    2、方法二会存在Bug,大家可参考http://blog.csdn.net/limingmcu/article/details/24237241
    展开全文
  • 1.窗口分割: (参考:https://blog.csdn.net/weixin_45553150/article/details/106419738?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242l) 创建了...

    这里写自定义目录标题

    1.窗口分割:
    (参考:https://blog.csdn.net/weixin_45553150/article/details/106419738?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242l)
    创建了CSHPManagementSystem30Dlg的工程文件,及对话框,类。
    通过类向导创建CLeftDlg、CCenterDlg、CRightDlg类,基类为CFormView。
    通过类向导添加WM_CREAT消息,添加OnCreate函数:

    int CSHPManagementSystem30Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
    		return -1;
    	// TODO:  在此添加您专用的创建代码
    	CString strMyClass = AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,
    		::LoadCursor(NULL, IDC_ARROW), (HBRUSH)::GetStockObject(WHITE_BRUSH),
    		::LoadIcon(NULL, IDI_APPLICATION));
    
    	//创建frame window作为子窗口
    	m_pFrameWnd = new CFrameWnd;
    	m_pFrameWnd->Create(strMyClass, _T(""), WS_CHILD, CRect(0, 0, 300, 300), this);
    	m_pFrameWnd->ShowWindow(SW_SHOW);
    
    	//创建分割窗口
    	m_splitterWnd.CreateStatic(m_pFrameWnd, 1, 3);
    	m_splitterWnd.CreateView(0, 0, RUNTIME_CLASS(CLeftDlg), CSize(150, 150), NULL);
    	m_splitterWnd.CreateView(0, 1, RUNTIME_CLASS(CCenterDlg), CSize(590, 100), NULL);
    	m_splitterWnd.CreateView(0, 2, RUNTIME_CLASS(CRightDlg), CSize(200, 100), NULL);
    	// TODO:  在此添加您专用的创建代码
    
    	return 0;
    }
    

    在CSHPManagementSystem30Dlg.cpp的OnInitDialog()函数中添加:

    CRect rect;
    	GetWindowRect(&rect);
    	ScreenToClient(&rect);
    	m_pFrameWnd->MoveWindow(&rect);
    	m_pFrameWnd->ShowWindow(SW_SHOW);
    

    最后在CSHPManagementSystem30Dlg.cpp中添加CLeftDlg、CCenterDlg、CRightDlg的头文件。
    2.窗口最大化和最小化:
    (参考:https://blog.csdn.net/zhulichen/article/details/52469664?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161129925216780262553139%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161129925216780262553139&biz_id=0&utm_medium)
    在CSHPManagementSystem30Dlg.h中添加

    POINT Old;
    	void resize();
    

    在CSHPManagementSystem30Dlg.cpp的OnInitDialog()函数中添加:

    GetClientRect(&rect);     //取客户区大小  
    Old.x = rect.right - rect.left;
    Old.y = rect.bottom - rect.top;
    

    通过类向导添加WM_SIZE消息,添加OnSize相应函数

    void CSHPManagementSystem30Dlg::OnSize(UINT nType, int cx, int cy)
    {
    	CDialogEx::OnSize(nType, cx, cy);
    
    	// TODO: 在此处添加消息处理程序代码
    	if (nType == SIZE_RESTORED || nType == SIZE_MAXIMIZED)
    	{
    		resize();
    	}
    }
    

    在CSHPManagementSystem30Dlg.cpp中添加resize函数:

    void CSHPManagementSystem30Dlg::resize()
    {
    	float fsp[2];
    	POINT Newp; //获取现在对话框的大小
    	CRect recta;
    	GetClientRect(&recta);     //取客户区大小  
    	Newp.x = recta.right - recta.left;
    	Newp.y = recta.bottom - recta.top;
    	fsp[0] = (float)Newp.x / Old.x;
    	fsp[1] = (float)Newp.y / Old.y;
    	CRect Rect;
    	int woc;
    	CPoint OldTLPoint, TLPoint; //左上角
    	CPoint OldBRPoint, BRPoint; //右下角
    	HWND  hwndChild = ::GetWindow(m_hWnd, GW_CHILD);  //列出所有控件  
    	while (hwndChild)
    	{
    		woc = ::GetDlgCtrlID(hwndChild);//取得ID
    		GetDlgItem(woc)->GetWindowRect(Rect);
    		ScreenToClient(Rect);
    		OldTLPoint = Rect.TopLeft();
    		TLPoint.x = long(OldTLPoint.x * fsp[0]);
    		TLPoint.y = long(OldTLPoint.y * fsp[1]);
    		OldBRPoint = Rect.BottomRight();
    		BRPoint.x = long(OldBRPoint.x * fsp[0]);
    		BRPoint.y = long(OldBRPoint.y * fsp[1]);
    		Rect.SetRect(TLPoint, BRPoint);
    		GetDlgItem(woc)->MoveWindow(Rect, TRUE);
    		hwndChild = ::GetWindow(hwndChild, GW_HWNDNEXT);
    	}
    	Old = Newp;
    
    }
    

    **存在问题之前窗口分割的分界面的控件并没有根据主界面的大小而等比例变化,**自认为原因是虽然控件放在了三个分界面上,但还没有做界面挂载。
    问题没有解决,给示例编辑框加了变量。(这一步无所谓)
    最后的问题解决方式:在CLeftDlg、CCenterDlg、CRightDlg的头文件中添加:

    POINT Old;
    	void resize();
    

    在CLeftDlg、CCenterDlg、CRightDlg的。Cpp文件中添加和上述相同的OnSize函数和resize函数。。。复制的时候注意更改CSHPManagementSystem30Dlg变为各自的类名。

    在这里插入代码片
    
    展开全文
  • 求三个数中的最大值,使用对话框编写的,很实用,适合初学者
  • 步骤一:把easysize.h拷贝到CMyDlg项目文件夹中,同时在CMyDlg的.h文件.cpp文件中加 入#include "easysize.h"; 步骤二:在CMyDlg类的h文件中,加入DECLARE_EASYSIZE,注意结尾处不要加“;”
  • 1. 实现方法(计算窗口放大/缩小比例,控件相应缩放并改变位置,但会存在一定问题) 先在窗口类的头文件中添加相应变量与函数(其中OnSize由类向导消息WM_SIZE生成): // XXXDlg.h // 窗口放大所需变量 ...
  • 易语言调整通用对话框窗口默认大小源码
  • //存放对话框的宽高。 OnInitDialog() //计录宽高。  CRect rect;   GetClientRect(&rect); //取客户区大小   Old.x=rect.right-rect.left;  Old.y=rect.bottom-rect.top; 二 添加 WM_...
  • ExtJS中窗口是由Ext.Window类定义,该类继承自Panel,因此窗口其实是一种特殊的面板Panel。窗口包含了浮动、可拖动、可关闭、最大化、最小化等特性。
  • MFC对话框启动默认最大

    千次阅读 2018-04-13 09:30:03
    在OnInitDialog()函数添加:在其中添加如下语句:ShowWindow(SW_MAXIMIZE);BOOL CMFrame::OnInitDialog(){ CDialogEx::OnInitDialog(); ...... ShowWindow(SW_MAXIMIZE);//对话框默认最大化弹出 returnTRUE;}...
  • 无论是模态对话框还是非模态对话框,都可以直接申请基类CDialog 对象来创建。 窗口创建时的消息虚函数包括WM_CREATE、WM_INITDIALOG、PreSubclassWindow等;窗口关闭时的消息虚函数包括WM_CLOSE、WM_DESTORY、...
  • MFC对话框窗口函数调用顺序

    千次阅读 2016-10-21 17:59:16
    1、模式对话框的创建过程: 1) DoModal() 重载函数,重载DoModal()成员函数。 2) PreSubclassWindow() 重载函数,允许首先子分类一个窗口。 3) OnCreate() 消息响应函数,响应W
  • 模式对话框与非模式对话框区别

    千次阅读 2018-09-28 14:56:47
    模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口...
  • MFC 限制对话框,窗口大小

    千次阅读 2014-07-16 14:23:45
     如何控制窗口框架的最大最小尺寸 答:要控制一个框架的的最大最小尺寸,你需要做两件事情.  在CFrameWnd的继承类 中处理消息WM_GETMINMAXINFO,结构MINMAXINFO设置了整个窗口类的限制,  因此记 住要考虑工具条...
  • 原文地址:MFC对话框控件背景图片自适应窗口最大拉伸缩放的实现作者:406603288  转自http://hi.baidu.com/peter_niu_alex/blog/item/1ae6fd3e4ba549fc828b13b1.html   近日在code project网站...
  • 在写程序时,如果包含了标题栏,但是没有包含最大化按钮或者最小话按钮,那么人工用ShowWindow(SW_MAXIMIZE),窗口会盖住任务栏,并且窗口最大化后还可以拖动!解决窗口最大化可以拖动的问题就是在最大化时不让其...
  • 方法一: 在OnInitDialog()函数中  ...当然,你可以获取屏幕大小,然后设置窗口位置/大小  //ShowWindow(SW_MAXIMIZE);   // 获得屏幕分辨率   HDC hDesktopDC = CreateDC(_T("DISPLAY"), NULL,
  • 想必大家都有在使用MFC写完程序之后,想让写的程序在点击最大化或者使用鼠标拖住边框之后,也能让窗口内各个控件大小及其位置的也随之改变。 这里使用的原理就是利用 MoveWindow、SetWindowPos 等函数进行窗口内各个...
  • 带有轻量级的窗口管理器,该管理器支持多个对话框和堆栈。 总览 Win32Dialog窗口的行为与经典Windows OS对话框非常相似。 可以通过左键单击并从任意边缘拖动来调整它们的大小。 可以通过左键单击并拖动标题栏来...
  • 最近开发MFC的时候,发现标题栏无法显示最大化、最小化关闭按钮了 右击属性栏,发现如下设置成了灰色的了 解决办法: 设置System Menu为True,上面的最大最小化就可以设置了
  • MFC对话框增加最大最小化按钮

    万次阅读 2014-05-30 14:01:48
    1.在对话框上右键选择属性 2.切换到
  • MFC模态对话框和非模态对话框

    千次阅读 多人点赞 2018-09-11 15:30:54
    下面是一个我的手写的模态对话框和非模态对话框图: 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务。非模态对话框是指当其显示时,允许转而执行程序中其他...
  • 实现碰屏幕边界最大化功能很简单,但是网上很难找到对应的资料,在此记录一下,方便自己其他人。 实现对话框的WM_NCCALCSIZE消息,代码如下: void CTestDlg::OnNcCalcSize(BOOL bCalcValidRects, NCC...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,258
精华内容 29,703
关键字:

对话框和窗口的最大区别是