博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Demo 0023】改变窗体的位置, 大小及Z-ORDER
阅读量:4979 次
发布时间:2019-06-12

本文共 1755 字,大约阅读时间需要 5 分钟。

在我们【改变窗体的位置及大小】中有讲解类似的内容, 这一节将讲述更高级一些的API,它不仅改变窗体的位置,大小还可以改变窗体间的前后顺序即Z-ORDER, 另外支持控制窗体其他属性如:显示/隐藏, 更新后窗体刷新状态等. 

(一) 函数定义及演示代码

      BOOL SetWindowPos(HWND hWnd, HWND hInsertAfter, int x, int y, int cx, int cy, UINT nFlag)

      hInsertAfter  参数说明:

   HWND_BOTTOM        将当前窗体置于所有最顶层窗体的最低层

           HWND_NOTOPMOST  将当前窗体置于所有最顶层窗体之下            HWND_TOP              将当前窗体置于项层            HWND_TOPMOST      将当前窗体置于最顶层

      设置指定窗体(控件、弹出式窗体和顶层窗体)的位置,大小和z-order

     

      Code 1: 通过SetWindowPos 将主窗体移动到屏幕客户区中间   

     

//--: Move Main wnd to center of screen
RECT
rtMainWnd
;
GetClientRect
(
hWnd
, &
rtMainWnd
);
UINT
nWndWidth        
= (
rtMainWnd
.
right
-
rtMainWnd
.
left
);
UINT
nWndHeight        
= (
rtMainWnd
.
bottom
-
rtMainWnd
.
top
);
UINT
nLeft            
= (
nSrnWidth
-
nWndWidth
) / 2;
UINT
nTop            
= (
nSrnHeight
-
nWndHeight
) / 2;
SetWindowPos
(
hWnd
,
NULL
,
nLeft
,
nTop
,
nWndWidth
,
nWndHeight
,
SWP_NOSIZE
|
SWP_NOZORDER
);

     

      Code 2: 通过SetWindowPos 改变控件大小并居中对齐(将控件放大一倍)

//--: Move "Move Center" Button to center of client area and inflate
RECT
rtBtnMove
;
GetClientRect
(
hBtnWndMove
, &
rtBtnMove
);
UINT
nMoveBtnWidth    
= 200;
UINT
nMoveBtnHeight
= 100;
UINT
nX                
= (
nWndWidth
-
nMoveBtnWidth
) / 2;
UINT
nY                
= (
nWndHeight
-
nMoveBtnHeight
) / 2;
SetWindowPos
(
hBtnWndMove
,
NULL
,
nX
,
nY
,
nMoveBtnWidth
,
nMoveBtnHeight
,
SWP_NOZORDER
);

      

     Code 3: 通过SetWindowPos 改变主窗体的z-ORDER(动态设置到最顶层或取消最顶层属性)

static
bool
bTopMost
=
false
;
HWND
hWndInsertAfter
;
if
(
bTopMost
)
{
    
hWndInsertAfter
=
HWND_NOTOPMOST
;   
// HWND_BOTTOM; //HWND_TOP;
    
SetWindowText
(
hBtnWndState
,
_T
(
"To TopMost"
));
    
bTopMost
=
false
;
}
else
{
    
hWndInsertAfter
=
HWND_TOPMOST
;
    
SetWindowText
(
hBtnWndState
,
_T
(
"To NoTopMost"
));
    
bTopMost
=
true
;
}
SetWindowPos
(
hWnd
,
hWndInsertAfter
, 0, 0, 0, 0,
SWP_NOMOVE
|
SWP_NOSIZE
);

 

转载于:https://www.cnblogs.com/ztercel/archive/2011/08/13/2137608.html

你可能感兴趣的文章
微信小程序去除button默认样式
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
Java打包可执行jar包 包含外部文件
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>
js中escape,encodeURI,encodeURIComponent 区别(转)
查看>>
sass学习笔记-安装
查看>>
Flask (二) cookie 与 session 模型
查看>>
修改添加网址的教程文件名
查看>>
[BZOJ 1017][JSOI2008]魔兽地图DotR(树形Dp)
查看>>
裁剪图片
查看>>
数据结构实习 problem L 由二叉树的中序层序重建二叉树
查看>>
VS中展开和折叠代码
查看>>
如何确定VS编译器版本
查看>>
设置PL/SQL 快捷键
查看>>
个人阅读作业7
查看>>
转载:深入浅出Zookeeper
查看>>
GMA Round 1 新程序
查看>>
node anyproxy ssi简易支持
查看>>
编译预处理指令:文件包含指令、宏定义指令、条件编译指令
查看>>
PHP函数 ------ ctype_alnum
查看>>