最大化最小的使得的函数是 ShowWindow函数

 ShowWindow(SW_SHOWMINIMIZED);//最小化
ShowWindow(SW_SHOWMAXIMIZED);//最大化
ShowWindow(SW_RESTORE);//还原 -------
PostMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,);
SC_MAXIMIZE为最大化。

使用方法:

BOOL ShowWindow(    int nCmdShow  );

参数
nCmdShow
指定 CWnd 将如何显示。 它必须是下列值之一:
• SW_HIDE 隐藏该窗口并通过启动到另一个窗口。
• SW_MINIMIZE 最小化窗口并激活在系统的顶级窗口列表。
• SW_RESTORE 激活并显示窗口。 如果窗口处于最小化或最大化,Windows还原为其原始大小和位置。
• SW_SHOW 激活窗口并显示在其当前大小和位置。
• SW_SHOWMAXIMIZED 激活窗口并将其显示为最大化窗口的大小。
• SW_SHOWMINIMIZED 激活窗口并将其显示为图标。
• SW_SHOWMINNOACTIVE 显示窗口作为图标。 当前活动的窗口保持有效。
• SW_SHOWNA 显示在其当前状态的窗口。 当前活动的窗口保持有效。
• SW_SHOWNOACTIVATE 显示在其最近大小和位置的窗口。 当前活动的窗口保持有效。
• SW_SHOWNORMAL 激活并显示窗口。 如果窗口处于最小化或最大化,Windows还原为其原始大小和位置。
返回值
非零,则窗口先前是可见的,,如果 CWnd 以前是隐藏的。

也可使用消息的方法来解决:

PostMessage(hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0);

系统消息命令  SC_MAXIMIZE 最小化命令

hwnd是要操作的对象!

第一种方法:使用SetWindowPos函数
CWnd::SetWindowPos

BOOL   SetWindowPos(const   CWnd*   pWndInsertAfter,   int   x,   int   y,   int   cx,   int   cy,UINT   nFlags   );
  返回值如果函数成功,则返回非零值;否则返回0。

说明  
   
    调用这个成员函数以改变子窗口、弹出窗口和顶层窗口的大小、位置和Z轴次序。窗口在屏幕上按照它们的Z轴次序排序。在Z轴次序上处于顶端的窗口将程序在所有其它窗口的顶部。子窗口的所有坐标都是客户坐标(相对于父窗口客户区的左上角)。窗口可以被移动到Z轴次序的顶部,既可以通过将pWndInsertAfter参数设为&wndTopMost,并确保没有设置SWP_NOZORDER标志,也可以通过设置窗口的Z轴次序使它位于所有现存的顶层窗口上方。当一个非顶层窗口被设为顶层窗口时,它拥有的窗口也被设为顶层的。它的拥有者不发生变化。如果顶层窗口被重新定位到Z轴次序的底部(&wndBottom)或任何非顶层窗口之后,则它将不再是顶层窗口。当顶层窗口被变为非顶层窗口时,它所有的拥有者和它拥有的所有窗口都被变为非顶层窗口。如果既没有指定SWP_NOACTIVE标志也没有指定SWP_NOZORDER标志(这意味着应用程序要求窗口被同时激活并放入指定的Z轴次序),则pWndInsertAfter参数中指定的值将只在下列环境下适用:l   在pWndInsertAfter参数中既没有指定&wndTopMost也没有指定&wndNoTopMost。  
    这个窗口不是活动窗口。应用程序不能激活一个非活动窗口但同时又不把它带到Z轴次序的顶部。应用程序可以没有任何限制地改变活动窗口的Z轴次序。非顶层窗口可能拥有一个顶层窗口,但是反之则不成立。任何被顶层窗口拥有的窗口(例如对话框)都将自己变为顶层窗口,以确保所有被拥有的窗口位于它们的拥有者上方。在Windows   3.1或更新的版本中,可以将窗口移动到Z轴次序的顶部,并通过设置它们的WS_EX_TOPMOST风格而将之锁定在那里。这种顶层窗口即使在失去活动状态以后也会保持顶层位置。例如,选择WinHelp的Always   On   Top命令会使帮助窗口变为顶层,并且在你返回应用程序之后它还保持可见。要创建一个顶层窗口,应在调用SetWindowPos的时候将pWndInsertAfter参数设为&wndTopMost,或者在创建窗口的时候设置WS_EX_TOPMOST风格。如果Z轴次序中包含了任何具有WS_EX_TOPMOST风格的窗口,则用&wndTopMost移动的窗口将被放到所有非顶层窗口的顶部,但是位于任何顶层窗口的下面。当应用程序激活一个不具有WS_EX_TOPMOST风格的非活动窗口时,该窗口将被移动到所有非顶层窗口的上方,但是位于所有顶层窗口的下方。如果在调用SetWindowPos的时候pWndInsertAfter参数被设为&wndBottom,并且CWnd是一个顶层窗口,则该窗口失去顶层状态(WS_EX_BOTTOM风格被清除),并且系统将窗口放在Z轴次序的底部 。
   
  参数pWndInsertAfter  
  标识了在Z轴次序上位于这个CWnd对象之前的CWnd对象。这个参数可以是指向CWnd对象的指针,也可以是指向下列值的指针:  
    wndBottom       将窗口放在Z轴次序的底部。如果这个CWnd是一个顶层窗口,则窗口将失去它的顶层状态;系统将这个窗口放在其它所有窗口的底部。  
    wndTop       将窗口放在Z轴次序的顶部。  
    wndTopMost       将窗口放在所有非顶层窗口的上面。这个窗口将保持它的顶层位置,即使它失去了活动状态。  
    wndNoTopMost       将窗口重新定位到所有非顶层窗口的顶部(这意味着在所有的顶层窗口之下)。这个标志对那些已经是非顶层窗口的窗口没有作用。有关这个函数以及这些参数的使用规则参见说明部分。  
   
  x指定了窗口左边的新位置。  
  y指定了窗口顶部的新位置。  
  cx指定了窗口的新宽度。  
  cy指定了窗口的新高度。  
   
  nFlags指定了大小和位置选项。这个参数可以是下列值的组合:  
    SWP_DRAWFRAME       围绕窗口画出边框(在创建窗口的时候定义)。  
    SWP_FRAMECHANGED       向窗口发送一条WM_NCCALCSIZE消息,即使窗口的大小不会改变。如果没有指定这个标志,则仅当窗口的大小发生变化时才发送WM_NCCALCSIZE消息。  
    SWP_HIDEWINDOW       隐藏窗口。  
    SWP_NOACTIVATE       不激活窗口。如果没有设置这个标志,则窗口将被激活并移动到顶层或非顶层窗口组(依赖于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       保持当前的次序(忽略pWndInsertAfter)。  
    SWP_SHOWWINDOW       显示窗口。

========================================================================

第二种方法:使用MoveWindow函数
void   CWnd::MoveWindow(   int   x,   int   y,   int   nWidth,   int   nHeight,   BOOL   bRepaint   =   TRUE   );  
void   CWnd::MoveWindow(   LPCRECT   lpRect,   BOOL   bRepaint   =   TRUE   );  
    参数  
    x指定了CWnd的左边的新位置。  
    y指定了CWnd的顶部的新位置。  
    nWidth指定了CWnd的新宽度。  
    nHeight指定了CWnd的新高度。  
    bRepaint指定了是否要重画CWnd。如果为TRUE,则CWnd象通常那样在OnPaint消息处理函数中接收到一条WM_PAINT消息。如果这个参数为FALSE,则不会发生任何类型的重画操作。这应用于客户区、非客户区(包括标题条和滚动条)和由于CWnd移动而露出的父窗口的任何部分。当这个参数为FALSE的时候,应用程序必须明确地使CWnd和父窗口中必须重画的部分无效或重画。

lpRectCRect对象或RECT结构,指定了新的大小和位置。说明这个函数改变窗口的位置和大小。对于顶层的CWnd对象,x和y参数是相对于屏幕的左上角的。对于子对象,它们是相对于父窗口客户区的左上角的。  
  MoveWindow函数发送一条WM_GETMINMAXINFO消息。处理这个消息时,CWnd得到一个改变最大和最小的窗口缺省值的机会。如果传递给MoveWindow成员函数的参数超过了这些值,则在WM_GETMINMAXINFO处理函数中可以用最小或最大值来代替这些值。

VC++ 如何使窗体最大化或是最小化的更多相关文章

  1. WPF编程,窗体最大化、最小化、关闭按钮功能的禁用

    原文:WPF编程,窗体最大化.最小化.关闭按钮功能的禁用 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/detail ...

  2. winform窗体最大化、最小化、还原

    //最大化 private void button_maxsize_Click(object sender, EventArgs e)        {            this.WindowS ...

  3. [Winfrom] 捕获窗体最大化、最小化和关闭按钮的事件

    const int WM_SYSCOMMAND = 0x112;const int SC_CLOSE = 0xF060;const int SC_MINIMIZE = 0xF020;const int ...

  4. Qt QDialog添加最大化和最小化按钮

    Qt QDialog添加最大化和最小化按钮(转载) QDialog窗体右上角默认是没有最小化和最大化按钮的. 1.效果 2.上代码 1 // 设置窗体最大化和最小化 2 Qt::WindowFlags ...

  5. C# WinForm窗体隐藏右上角最小化、最大化、关闭按钮

    C# WinForm窗体隐藏右上角最小化.最大化.关闭按钮 如何赢藏WinForm窗体的右上角按钮  设置设置ControlBox = false: 设置ControlBox = false:

  6. C#常用的form窗体属性(最大化、最小化、窗体居中)

    一.窗体居中 //窗体居中 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 二.去掉最小化.最大化 ...

  7. MFC的最大化,最小化,关闭

    最大化.最小化和关闭按钮是窗口中最主要的元素.首先要说明,说他们是按钮其实是不准确的,按钮是一种窗口,而这三个组件根本就不是窗口,而是一个窗口常见的组成部分.出于习惯的原因,这里还是称呼他们为按钮. ...

  8. C# 隐藏最大化、最小化和关闭三个按钮

    在Windows的窗体编程中,基本上每一个窗体都是一个最小化.最大化和关闭按钮的. 一.禁用最大化和最小化 对于最大化和最小化按钮,在C#窗体开发时,各一个属性来启用或禁用这两个按钮. this.Ma ...

  9. C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    from:http://www.jb51.net/article/71319.htm 本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具 ...

随机推荐

  1. Mesos

    1. 软件定义数据中心 Mesos的二级调度机制: maseos协调每个节点的slave,获取每个节点的机器资源.获取资源后,在相应节点运行framework,在容器中执行任务.从而使得多种类型的服务 ...

  2. APP常见崩溃原因和测试方法整理

    测试过APP的人都应该发现,app崩溃是一类非常常见的问题,很多时候还是致命性的,这就要求我们测试人员要尽最大可能去找出软件当中的缺陷,减少app崩溃出现的概率,这里我将收集到的关于针对APP崩溃测试 ...

  3. php 升级排错

    lnmp 环境下,升级php版本,模块都加载完成,数据库,nginx 设置都完好,但php 只能用ip 访问数据库,不能用localhost,处理要设置php.ini 的三个mysqld.sock,还 ...

  4. jQuery的一些笔记

    1.区别jQuery对象和DOM对象. var text1=document.getElementByTagName("div") var $text2=$("div&q ...

  5. 彻底弄懂响应式设计中的em和rem

    前一阵子在响应式开发中遇到了em和rem的问题,也上网搜过一些文章,篇幅很长,也没有仔细看,今天来总结一下. rem是指:根元素(root element,html)的字体大小, em是指:父元素的字 ...

  6. 反人类的MyEclipse之-Javascript双引号自动补全

    MyEclipse由于在JavaScript中按下一个双引号后会自动把后面的双引号补全.本人习惯两个双引号一起按下,那么这个时候在编辑器里就会出现三个",这样导致代码错误. 今天就因为MyE ...

  7. 根据 MySQL 状态优化 ---- 4. 临时表

    查看 MySQL 服务器运行的各种状态值: mysql> show global status: 4. 临时表 查看设置: mysql> show variables where Vari ...

  8. QT不同版本编译

    QT发布了不同版本,有一些语法修改,需要修改代码.同时旧版本代码转换需要在pro文件中添加代码greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

  9. ORA-04021:timeout occurred while waiting to lock object

    编译某存储过程 ORA-04021 timeout occurred while waiting to lock object stringstringstringstringstring Cause ...

  10. hive内部表、外部表、分区表、视图

    1.Table 内部表 1).与数据库中的Table在概念上是类似的 2).每一个Table在Hive中都有一个相应的目录存储数据 3).所有的Table数据(不包括 External Table) ...