精华内容
下载资源
问答
  • 对话框的位置可以移动吗
    千次阅读
    2022-02-10 10:49:06

    可以使用函数SetWindowPos()MoveWindow()设置对话框或控件的大小和位置。

    目录

    1. MoveWindow()

    2. SetWindowPos


    1. MoveWindow()

    函数原型:

    void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);
    void CWnd::MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);

    函数功能:
    改变指定窗口的位置和大小,对基类窗口来说,位置和大小取决于屏幕的左上角;对于子窗口来说,位置和大小取决于父窗口客户区的左上角。对于Owned窗口,位置和大小取决于屏幕左上角。

    参数介绍:
    @x/y/nWidth/nHeight/lpRect:指定了窗口的新的位置和大小;
    @bRepaint:指定了是否要重画CWnd。
            如果为TRUE,则CWnd会在OnPaint消息处理函数中接收到一条WM_PAINT消息;
            如果为FALSE,则不会发生任何类型的重画操作。这应用于客户区、非客户区(包括标题条和滚动条)和由于CWnd移动而露出的父窗口的任何部分。当这个参数为FALSE的时候,应用程序必须明确地使CWnd和父窗口中必须重画的部分无效或重画。

    MoveWindow给窗口发送WM_WINDOWPOSCHANGINGWM_WINDOWPOSCHANGEDWM_MOVEWM_SIZEWM_NCCALCSIZE消息。

    MoveWindow函数发送一条WM_GETMINMAXINFO消息,处理这个消息时,CWnd得到一个改变最大和最小的窗口缺省值的机会。如果传递给MoveWindow成员函数的参数超过了这些值,则在WM_GETMINMAXINFO处理函数种可以用最小值或最大值来代替这些值。


    2. SetWindowPos

    SetWindwoPos函数改变一个子窗口、弹出式窗口或顶层窗口的尺寸,位置和Z序。子窗口、弹出式窗口以及顶层窗口根据他们在屏幕上出现的顺序排序,顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。

    函数原型:

    BOOL SetWindowPos(const CWnd *pWndInsertAfter, int x, int y, int cx, int cy, UINT nFlags);

    函数功能:
    该函数改变子窗口、弹出窗口和顶层窗口的大小、位置和Z轴次序。窗口在屏幕上按照它们的Z轴次序排序。在Z轴次序上处于顶端的窗口将程序在所有其它窗口的顶部。子窗口的所有坐标都是客户坐标(相对于父窗口客户区的左上角)。窗口可以被移动到Z轴次序的顶部,既可以通过将pWndInsertAfter设置为&wndTopMost,并确保没有设置SWP_NOZORDER标志,也可以用过设置窗口的Z轴次序使它位于所有现存的顶层窗口上方。当一个非顶层窗口被设置为顶层窗口时,它拥有的窗口也被设为顶层的,它的拥有者不发生变化。如果顶层窗口被重新定位到Z轴次序的顶部(&wndBottom)或任何非顶层窗口之后,则它将不再是顶层窗口。当顶层窗口变为非顶层窗口时,它所有的拥有者和它拥有的所有窗口都变为非顶层窗口。

    函数参数:
    @pWndInsertAfter:标识一个CWnd对象,该对象是在以Z次序排序的窗口中位于当前窗口前面的那个窗口对象。这个参数是指向某个CWnd对象的指针,也可以是指向下表的指针之一:

    取值说明
    wndBottom把当前窗口放在Z次序的底部
    wndTop将当前窗口放置于Z次序的顶部
    wndTopMost将当前窗口设置为一个顶层窗口,放置于所有非顶层窗口之上,即使窗口未被激活也将保持顶层位置
    wndNoTopMost将当前窗口放置于所有非顶层窗口之上,但在所有顶层窗口之后

    @ x和y:窗口的左上角的x和y坐标;
    @ cx和cy:窗口的宽和高;
    @ nFlags:设定窗口的尺寸和定位,可以是下表的取值的组合:

    取值说明
    SWP_DRAWFRAME在窗口周围绘制一个边框,这是在窗口创建时定义的
    SWP_FRAMECHANGED给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送此消息。如果未指定这个标志,那么只有在改变了窗口尺寸时才发送WM_NCCALCSIZE消息
    SWP_HIDEWINDOW隐藏窗口
    SWP_NOACTIVE不激活窗口。如果未设置此标志,那么窗口被激活,并根据pWndInsertAfter参数的取值将当前窗口设置到其它顶层窗口或非顶层窗口之上
    SWP_NOCOPYBITS清除客户区的所有内容,如果未设置此标志,客户区的有效内容将被保存并且在窗口尺寸更新和重新定位后复制回客户区
    SWP_NOMOVE维持窗口当前位置,这将忽略x和y参数
    SWP_NOOWNERZORDER不改变Z次序的所有者窗口的位置
    SWP_NOREDRAW不重画改变的内容,如果设置此标志,则不会发生任何重画动作,适用于客户区和非客户区(包括标题栏和滚动条)和任何由子窗口移动而露出的父窗口的部分。如果设置了此标志,应用程序必须明确地使窗口无效,并且重画窗口和父窗口中任何需要重画的部分
    SWP_NOREPOSITION与SWP_NOOWNERZORDER标志的作用相同
    SWP_NOSENDCHANGING禁止窗口接收WM_WINDOWPOSCHANGING消息
    SWP_NOSIZE维持窗口的当前尺寸,将忽略cx和cy参数
    SWP_NOZORDER维持当前的Z次序,将忽略pWndInsertAfter参数
    SWP_SHOWWINDOW显示窗口

    MoveWidow和SetWindowPos中表示位置的参数都是相对于父窗口而言的。

    更多相关内容
  • VC实现鼠标移动对话框窗口,对于无标题栏的对话框移动比较方便
  • XSTEEL软件钢结构详图软件对话框移动小程序
  • MFC子对话框无法操作移动

    千次阅读 2021-11-13 18:24:18
    程序编译完成没问题,运行起来后拖拽对话框不能移动,仔细检查了代码也没发现问题,最后在对话框属性表里发现设置参数有误。Disable参数设置为false后生成的对话框就无法操作移动 ...

            程序编译完成没问题,运行起来后拖拽对话框不能移动,仔细检查了代码也没发现问题,最后在对话框属性表里发现设置参数有误。Disable参数设置为false后生成的对话框就无法操作移动

    展开全文
  • tekla structure中针对过大的节点对换框,进行上下移动,无需加大分辨率,所有版本都适用,修复了热键被锁定的错误,在没有节点对话框存在的时候,释放热键原有功能
  • 此篇介绍了如何继承Dialog自定义对话框,内容比较简单,所以我在后面补充了如何使用一款非常优秀的安卓ui框架实现自定义对话框。 同时这也是中国大学慕课移动终端应用开发的网课作业14,我会持续更新我的作业,如果...
  • https://blog.csdn.net/qq_29542611/article/details/87886253 MFC:移动对话框到右下角 示例代码
  • 对话框 控件大小 位置移动类 窗口最小化 窗口重绘响应函数的源代码
  • 只要修改鼠标移动事件中的矩形区域就可以改变ToolTip的显示位置。现在的矩形区域是(0,0)(100,100) 这只是在对话框中添加ToolTip的一种方法。如果有啥错误,请各位指出。 该代码通过vs2008编译,下载即可运行。
  • JS可移动弹出对话框

    2014-06-07 16:46:49
    JS实现移动对话框的创建,可以设置大小,初始化位置,开关闭及最小化最大化时调用的函数,是否可以移动、是否有缩放动画、是否有最大化最小化及关闭按键,是否有滚动条,总之功能多,使用方便,文件中有例子说明,...
  • MFC控制对话框窗口在屏幕上的移动范围,以把对话框窗口的位置控制在屏幕范围内为例 参考视频:https://www.bilibili.com/video/BV1Q741187fo ,该视频主要讲解了如何使用 MFC 创建一个贪吃蛇的小游戏程序,而控制...

    MFC控制对话框窗口在屏幕上的移动范围,以把对话框窗口的位置控制在屏幕范围内为例

    参考视频:https://www.bilibili.com/video/BV1Q741187fo ,该视频主要讲解了如何使用 MFC 创建一个贪吃蛇的小游戏程序,而控制对话框窗口在屏幕上的移动范围是其中的一个功能实现,现将其中的方法总结为如下步骤:

    1.添加消息函数

    在项目工程的类视图中找到需要控制移动范围的对话框,右键点击属性, 在消息选项卡下找到名为 WN_WINDOWPOSCHANGING 的消息函数,点击添加 OnWindowPosChanging 消息

    在这里插入图片描述==
    在这里插入图片描述

    (此处作者创建的是名为Snake、基于对话框的MFC项目,故直接在CSnakeDlg中添加OnWindowPosChanging消息)

    2.在新建的OnWindowPosChanging消息函数中修改代码如下:

    void CSnakeDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
    {
    	CDialogEx::OnWindowPosChanging(lpwndpos);
    
    	// TODO: 在此处添加消息处理程序代码
    
    	//获取屏幕的宽度和高度
    	int screenWidth = GetSystemMetrics(SM_CXSCREEN);
    	int screenHeight = GetSystemMetrics(SM_CYSCREEN);
    
    	//判断窗口的左侧边界是否超出屏幕左端,如超过则设置为窗口左边界与屏幕左端重合
    	if (lpwndpos->x < 0) { lpwndpos->x = 0; }
    	
    	//判断窗口的左侧边界是否超出屏幕右端,如超过则设置为窗口左边界与屏幕右端重合
    	if (lpwndpos->x + lpwndpos->cx > screenWidth) 
    	{
    		lpwndpos->x = screenWidth - lpwndpos->cx;
    	}
    
    	//判断窗口的上边界是否超出屏幕顶端,如超过则设置为窗口上边界与屏幕顶端重合
    	if (lpwndpos->y < 0) { lpwndpos->y = 0; }
    
    	//判断窗口的下边界是否超出屏幕底端,如超过则设置为窗口下边界与屏幕底端重合
    	if (lpwndpos->y + lpwndpos->cy > screenHeight)
    	{
    		lpwndpos->y = screenHeight - lpwndpos->cy;
    	}
    }
    

    (若想另行自定义窗口的移动范围,可直接在相应的 if 语句块中直接给lpwndpos->xlpwndpos->y 赋值范围移动的像素常数值)

    3.实现效果

    在这里插入图片描述

    展开全文
  • 弹出子对话框,在子对话框特定位置,显示非模态对话框对话框之间的数据传递
  • 基于Vue Dialog实现可以移动窗口
  • 在xsteel中移动属性对话框的小程序,方便建模
  • React组件库具有经典Windows外观的无模式,可调整大小和可移动对话框。 带有轻量级的窗口管理器,该管理器支持多个对话框和堆栈。总览Win32Dialog窗口的行为与经典Windows OS对话框非常相似。 可以通过左键单击并从...
  • 常用的MFC控件(包括字体、BMP控件)都可以进行缩放,子对话框的控件也可跟随主对话框大小缩放。单个对话框也适用。界面的控件ID循环查找存入数组中(这样界面可随意添删控件也不需要改变代码,注意控件ID不允许重复...
  • 对话框程序

    2014-02-27 20:36:33
    MFC对话框程序VC MFC 钩子 实现 自绘 窗体 标题栏 非客户区(含更新及相当文档...
  • VB对话框窗口移动VB对话框窗口移动VB对话框窗口移动VB对话框窗口移动VB对话框窗口移动
  • 主要介绍了vue实现element-ui对话框可拖拽功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 先通过SystemParametersInfo获取屏幕宽度,再获取当前对话框的长高,在使用MoveWindow就OK了 // 移动到右下角 void CMoveDlgTestDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 RECT ...

    代码

    在MFC中将dlg移动到右下角的代码如下:
    先通过SystemParametersInfo获取屏幕宽度,再获取当前对话框的长高,在使用MoveWindow就OK了

    // 移动到右下角
    void CMoveDlgTestDlg::OnBnClickedButton1()
    {
    	// TODO: 在此添加控件通知处理程序代码
    	RECT rectDesktop;
    	SystemParametersInfo(SPI_GETWORKAREA,0, &rectDesktop, 0 ); // 获得屏幕工作区大小 left:0,top:0,right:width,bottom:height
    	RECT rectDlg;
    	this->GetWindowRect(&rectDlg); // 获取当前窗口工作区大小
    	int dlgWidth = rectDlg.right - rectDlg.left;
    	int dlgHeight = rectDlg.bottom - rectDlg.top;
    	//this->ShowWindow(SW_SHOWNORMAL);
    	this->MoveWindow( rectDesktop.right - dlgWidth, rectDesktop.bottom - dlgHeight, dlgWidth, dlgHeight );
    }
    

    效果

    在这里插入图片描述
    有点缝隙,暂时没考虑那么多,我也不晓得,知道了再给你们说。

    完整代码

    项目工程代码可以在这里下载

    展开全文
  • 摘要:VC/C++源码,界面编程,对话框 VC++改变对话框中控件的颜色,并设置窗口属性为不可拖动改变大小,鼠标放在右下角窗体的边缘,也不会显示出可以拖动的标志,窗体固定显示为源代码中设置的大小,这都是一些VC++...
  • 移动引导对话框 移动 bootstrap3 对话框
  • qt对话框移动

    2018-10-17 08:52:21
    qt对话框移动依赖于标题栏,如果标题栏被隐藏,对话框就不能移动,这种情况下可以重写 void mousePressEvent(QMouseEvent *)和void mouseMoveEvent(QMouseEvent *)方法,如: QPoint dragPosition //用来保存偏移...
  • QT 改变对话框位置

    千次阅读 2018-09-04 10:02:10
    设置窗口居中显示这是在UI编程中经常要遇到的问题。 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include &lt;QDesktopWidget&gt;...也可以 move((desktop-&gt;...
  • 对话框AlertDialog PAGE 1 实训实 验 报 告 实训(实验)项目: 对话框使用 实验目的 学习对话框相关属性 学习对话框控件相关属性与使用 实训实验设计器材步骤结论 简介 AlertDialog可以在当前的界面弹出一个对话框这个...
  • 对话框A, 非模态对话框B。 使移动A时, B 随着A 的移动移动 在A中添加B 的指针变量 mydlg *dlg ; 某个按钮显示代码  dlg = new mydlg(); dlg->Create(IDD_DIALOG1, this); dlg->ShowWindow(SW...
  • 使用简单,高度可定制的,移动友好的Vue.js 2.0 模态对话框
  • 在MFC程序中总是会遇到将原来写过的对话框程序移植到新程序的情况,这个文档讲述的就是如何在不重新绘制窗体和控件的情况下以最简单的方式移植过去。
  • 1.创建2个对话框 CSendDlg send; BOOL CTestTCPDlg::OnInitDialog() { CDialog::OnInitDialog(); SetWindowPos(&wndTop,250,250,400,200,SWP_SHOWWINDOW); send= new CSendDlg; send->Create(IDD_DIALOG_...
  • 窗口A: ComboBox 里面存储着窗口B的标题, 点击按钮1设置窗口B的标题. Button 4个, 文本框一个, 输入数字后点击4个方位的按钮, 窗口B会移动多少距离. 滑块 , 改变窗口B的透明度

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,563
精华内容 60,625
热门标签
关键字:

对话框的位置可以移动吗