博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC SetWindowPos
阅读量:4303 次
发布时间:2019-05-27

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

函数原型:

  BOOL CWnd::SetWindowPos

  (
  const CWnd* pWndInsertAfter, //插入的地方
  int x, //水平坐标
  int y, //垂直坐标
  int cx, //宽
  int cy, //高
  UINT nFlags //窗口定位标识
  );

说明:

  这个函数能改变窗口的大小、位置和设置子窗口、弹出窗口或顶层窗口的排列顺序。 

  返回值:

  返回值BOOL类型,如果返回值非零表示成功,返回零表示失败。

参数表:

  参数类型及说明 

  hWndInsertAfter HWND,置于hwnd前面的窗口句柄。这个参数必须是窗口的句柄或是下面的值之一:

    wndBottom 将窗口置于其它所有窗口的底部

    wndTop 将窗口置于它所有窗口的顶部
    wndTopMost 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的前面。即使这个窗口不是活动窗口,也维持最顶部状态
    wndNoTopMost 将窗口置于其它所有窗口的顶部,并位于任何最顶部窗口的后面。如果这个窗口非顶部窗口,这个标记对该窗口并不产生影响 

x: int,指定窗口新的X坐标

Y: int,指定窗口新的Y坐标

cx: int,指定窗口新的宽度

cy: int,指定窗口新的高度

nFlags: UINT,指定窗口状态和位置的标记。

 

如下将窗口置顶,并且不改变窗口的位置与大小

SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);

相关函数:

MoveWindow,SetActiveWindow,SetForegroundWindow

 

以下例子通过MoveWindow()来达到窗口展开与折叠效果:

void CMainDlg::OnButton_more() 

{
 CRect cur_rect;
 int x, y;
 int cx, cy;

 if(m_moreIsActive)

 {
  GetWindowRect(&cur_rect);
  x = cur_rect.left;
  y = cur_rect.top;
  cx = cur_rect.Width();
  cy = cur_rect.Height()*2;
 
  MoveWindow(x, y, cx, cy);
  m_moreIsActive = false;
 }
 else
 {
  GetWindowRect(&cur_rect);
  x = cur_rect.left;
  y = cur_rect.top;
  cx = cur_rect.Width();
  cy = cur_rect.Height()/2;
  MoveWindow(x, y, cx, cy);
  m_moreIsActive = true;
 } 
}

转载地址:http://knmws.baihongyu.com/

你可能感兴趣的文章
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>
echarts 为例讲解 uni-app 如何引用 npm 第三方库
查看>>
uni-app跨页面、跨组件通讯
查看>>
springmvc-helloworld(idea)
查看>>
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>
数据结构和算法7-搜索
查看>>
数据结构和算法8-排序
查看>>
windows缺少dll解决办法
查看>>
JPA多条件动态查询
查看>>
JPA自定义sql
查看>>
BigDecimal正确使用了吗?
查看>>
joplin笔记
查看>>
JNDI+springmvc使用
查看>>
vue+springboot分页交互
查看>>