• 使用“user32.dll”控制窗体


    1.ShowWindow

    • 函数功能:该函数设置指定窗口的显示状态。

    • 函数原型:bool ShowWindow(HWND hWnd, int nCmdShow);

        hWnd指窗口句柄。

        nCmdShow:指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一:

          SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。nCmdShow=11。

          SW_HIDE:隐藏窗口并激活其他窗口。nCmdShow=0。

          SW_MAXIMIZE:最大化指定的窗口。nCmdShow=3。

          SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。nCmdShow=6。

          SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。nCmdShow=9。

          SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。nCmdShow=5。

          SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。    nCmdShow=10。

          SW_SHOWMAXIMIZED:激活窗口并将其最大化。nCmdShow=3。

          SW_SHOWMINIMIZED:激活窗口并将其最小化。nCmdShow=2。

          SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然维持激活状态。nCmdShow=7。

          SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=8。

          SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=4。

          SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。nCmdShow=1。

    • 在C#中使用:

        [DllImport("user32.dll", CharSet = CharSet.Auto)]

           private static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);

    2.ShowWindowAsync

    • 函数功能:设置由不同线程产生的窗口的显示状态。

    • 函数原型:bool ShowWindowAsync(HWND hWnd,int nCmdshow);

        hWnd:指窗口句柄。

        nCmdShow:指定窗口如何显示。查看允许值列表,请查阅ShowWlndow函数的说明部分。

    • 在C#中使用:

        [DllImport("user32.dll ")]

        private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);

    3.SetActiveWindow

    • 函数功能:激活一个窗口。该窗口必须与调用线程的消息队列相关联。

    • 函数原型:HWND SetActiveWindow(HWND hWnd);

        hWnd:将被激活的最顶层窗口。

        返回值:若函数调用成功,则返回原先活动窗口的句柄。若函数调用失败,则返回值为NULL。若要获得更多错误信息,可以调用GetLastError函数。

        备注:SetActiveWindow函数激活一个窗口。当应用程序处于后台时,将不激活指定窗口。当应用程序激活窗口时处于前台,则窗口将被放到前台。

    若hWnd参数指定的窗口是被调用线程创建的,调用线程的活动窗口的状态将被设置到hWnd中。否则,调用线程的活动窗口的状态被设为NULL。

    • 在C#中使用:

        [DllImport("user32.dll ")]

        private extern static int SetActiveWindow(IntPtr hwnd);

    4.SetForegroundWindow

    • 函数功能:将指定窗口的线程设置到前台,并且激活该窗口。

    • 函数原型:bool SetForegroundWindow(HWND hWnd);

        hWnd:将要设置前台的窗口句柄。

        返回值:如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零。

        备注:前台窗口是z序顶部的窗口,是用户的工作窗口。在一个多任务优先抢占环境中,应让用户控制前台窗口。

    • 在C#中使用:

        [DllImport("user32")]

        private static extern int SetForegroundWindow(IntPtr hwnd);

  • 相关阅读:
    【C++】链表回环检测
    【C++】满二叉树问题
    【C++】约瑟夫环(数组+链表)
    【C++】子序列匹配问题
    【OJ】抓牛问题
    【C++】基于邻接矩阵的图的深度优先遍历(DFS)和广度优先遍历(BFS)
    【C++】二叉树的构建、前序遍历、中序遍历
    范进中Nature——儒林外史新义
    VMware Workstation下ubuntu虚拟机无法上网连不上网络解决
    儒林外史人物——娄三、娄四公子
  • 原文地址:https://www.cnblogs.com/writecode/p/13953108.html
Copyright © 2020-2023  润新知