MoveWindow和SetWindowPos

1、
MoveWindow()用来改变窗口位置或大小。
void MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE);
void MoveWindow(LPCRECT lpRect, BOOL bRepaint = TRUE);

2、
SetWindowPos不仅可以用来改变窗口位置和大小,还可以设置窗口Z序特性。
BOOL SetWindowPos(
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags
);

pWndInsertAfter可为NULL或以下值的地址:
wndBottom:将窗口放置在Z次序的底部。
wndTop:将窗口放置在Z次序的顶部。
wndTopMost:将当前窗口设置为一个顶层窗口,放置于所有非顶层窗口之上,即使窗口未被激活。
wndNoTopMost:将当前窗口放置在所有顶层窗口之后,但在所有非顶层窗口之上。

x,y: 指定窗口位置。

cx,cy: 指定窗口的宽度和高度。

nFlags:

时间: 2024-10-22 15:24:31

MoveWindow和SetWindowPos的相关文章

MoveWindow and SetWindowPos

转自:http://blog.sina.com.cn/s/blog_82c346de0100u7kq.html MoveWindow and SetWindowPos (2011-09-14 15:56:51) 转载▼ 标签: 杂谈 分类: MFC MoveWindow仅仅能设置窗体的大小和位置:SetWindowPos拥有MoveWindow的所有功能之外.还能够设置窗体的层叠关系(如.把指定的窗体放在所有窗体的最上层--always   on   top就能够用这个函数.或者把指定的窗体放在

如何弹出一个窗口气泡(使用定时器向上移动)

原文链接:http://blog.csdn.net/tangaowen/article/details/5108980 如何弹出一个窗口气泡 最近在工作中遇到这样一个需求,就是需要将一个窗口从右下角任务栏下面缓缓的上升到任务栏的上面,现在有很多的软件都有这样的气泡,比如:搜狗输入法的词条更新窗口,还比如CSDN的广告窗口等等. 1.首先 将要弹出的窗口移动到任务栏(当前屏幕)以下 2.然后,获得任务栏(本质是个窗口)的高度,这样就可以知道窗口最终的位置了 3.然后,计算获得窗口最终停止的位置:计

window窗口详解

窗口 在图形化的基于win32的应用程序,窗口是屏幕的矩形区域,应用程序显示输出并接收来自用户的输入,因此,一个图形化基于win32的应用程序的首要任务之一就是创建一个窗口. 窗口与其它窗口共享屏幕,[本事]包括来自其它应用程序的窗口,每次只有一个窗口可以接收来自用户的输入,用户可以使用鼠标.键盘或其它输入设备与此窗口以及拥有该窗口的应用程序进行交互. 关于窗口 这个概述描述了应用程序用来创建和使用窗口的编程单元:管理窗口之间的关系:以及大小.移动.和显示窗口:概述包括以下主题: 桌面窗口  

【转载】ATL问题集

原文:http://blog.csdn.net/fengrx/article/details/4171629 这些问题是以前在csdn当版主是一些朋友整理的,今天找到了,贴到这里来! #1 如何使用控件不能改变大小? 答:有时我们需要创建不可改变大小的控件,像那种在运行时没有界面的控件(例:时间控件,SysInfo 等),想做到这种功能的话,请把以下代码加入到控件类的构造函数: m_bAutoSize = TRUE; SIZEL size = {24, 24}; AtlPixelToHiMetr

窗口和控件闪烁解决方案

对于MFC程序员来说做UI开发是痛苦的事情,不过大多数情况下我们都需要做这件事情,因为MFC自带的控件实在是太简陋了.这时候我们多半会涉及到自绘控件,随之而来的很可能就是窗口和控件的闪烁问题.这篇文章希望对MFC的窗口和控件闪烁问题做一个尽量全面的总结. 一.闪烁的原因 引起闪烁的原因很多,以至于网上有n多种解决闪烁问题的方法:如果你按照某一种方法做了仍然没有解决你的问题,请不要认定这个方法有问题,而是你没有对上号.如果你对这个解释不满意的话,我们就来深究一下到底是什么引起了闪烁.从原理上讲,闪

(转)解决WINDOWS 程序界面闪烁问题的一些经验

一般的windows 复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小的时候出现闪烁. 先来谈谈闪烁产生的原因 原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上只是写到了显存里,而显卡每隔一段时间把显存的内容输出到屏幕上,这就是刷新周期. 一般显卡的刷新周期是 1/80秒左右,具体数字可以自己设置的. 这样问题就来了,一般画图都是先画背景色,然后再把内容画上去,如果这两次操作不在同一个刷新周期内完成,那么给人的视觉感受就是,先看

MFC控件随对话框大小改变而改变

这也是我项目中碰到的问题,要让对话框中的控件随着对话框大小的变化进行自动调整,一般的做法是在WM_SIZE的响应函数中对所有的控件用MoveWindow()或者SetWindowPos()设置其变化比例. 但是由于需要自己计算,并且还有各种系统引起的情况,比如WIN7里有个选项"拖动时显示窗口内容",选中与不选中导致对话框内容显示完全不一样,选中时错误,不选正确,确实让人头大. 如EasySize是一个很好解决方案,用一些宏封装了内部的实现机制,使用起来方便快捷.原文地址:http:/

Windows media player控件第二次播放时无法全屏

新建MFC工程,插入windows media player control,属性设置fullscreen为true,设置好URL参数. 添加CWMPPlayer4,CWMPControls3类. 控件绑定关联变量CWMPPlayer4 m_player并设CWMPControls3 m_control = m_player.get_controls(); 为了达到循环播放的目的,响应PlayStateChange消息,消息处理函数中是如下两句: m_control.play(); m_play

nsis页眉铺满图片

这是群里有人经常询问的一个问题,其实自己仔细看看帮助文档,问问百度谷歌,很好解决.无非是两个方案. 第一,使用ResHacker之类的工具修改nsis自带的ui模版,控件id为1046,用鼠标将控件拖至铺满整个页眉保存后在脚本里面引用即可 第二代码解决这个问题,其实感觉还是修改ui模版是比较直观的办法,也好理解,但代码解决也无不可,看个人的习惯和能力,用代码解决有两个方式,API函数MoveWindow或者SetWindowPos,这两个函数谈不上孰优孰劣,我个人觉得使用MoveWindow比较