ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MFC SetWindowPos 窗口 的 Z 序

2019-07-27 09:05:04  阅读:329  来源: 互联网

标签:MFC 窗口 cur int cy cx SetWindowPos rect


函数原型:

  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;
 } 
}

标签:MFC,窗口,cur,int,cy,cx,SetWindowPos,rect
来源: https://blog.csdn.net/m0_37346206/article/details/97482347

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有