小甲鱼 发表于 2014-5-15 22:55:07

ShowWindow

函数功能:

ShowWindow 函数用于设置窗口的显示状态。

应用程序第一次调用 ShowWindow 时,应该使用 WinMain 函数的 nCmdshow 参数作为它的 nCmdShow 参数。在随后调用 ShowWindow 函数时,必须使用下列显示方式中的一个给定值,而不是由 WinMain 函数的 nCmdSHow 参数指定的值。


API 函数原型:

BOOL WINAPI ShowWindow(
_In_HWND hWnd,
_In_int nCmdShow
);

参数解析:


参数 含义
hWnd 窗口句柄
nCmdShow 控制窗口如何显示,如果发送应用程序的程序提供了 STARTUPINFO 结构,则应用程序第一次调用 ShowWindow 时该参数被忽略。否则,在第一次调用 ShowWindow 函数时,该值应为在函数 WinMain 中 nCmdShow 参数。


在随后的调用中,nCmdShow 参数可以为下列值之一:


显示方式 含义
SW_FORCEMINIMIZE1. 最小化窗口,即使拥有窗口的线程被挂起也会最小化
2. 在从其他线程最小化窗口时才使用这个参数
SW_HIDE 隐藏窗口并激活其他窗口
SW_MAXIMIZE 最大化指定的窗口
SW_MINIMIZE 最小化指定的窗口并且激活在 Z 序中的下一个顶层窗口
SW_RESTORE1. 激活并显示窗口
2. 如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置
3. 在恢复最小化窗口时,应用程序应该指定这个标志。
SW_SHOW 在窗口原来的位置以原来的尺寸激活并显示窗口
SW_SHOWDEFAULT 依据在 STARTUPINFO 结构中指定的 SW_FLAG 标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给 CreateProcess 函数的。
SW_SHOWMAXIMIZED 激活窗口并将其最大化
SW_SHOWMINIMIZED 激活窗口并将其最小化
SW_SHOWMINNOACTIVE1. 窗口最小化
2. 在窗口激活的情况下,这个值跟 SW_SHOWMINIMIZED 很相似
SW_SHOWNA1. 以窗口原来的位置以原来的尺寸显示窗口
2. 在窗口激活的情况下,这个值跟 SW_SHOW 很相似
SW_SHOWNOACTIVATE1. 以窗口最近一次的位置和尺寸显示窗口
2. 在窗口激活的情况下,这个值跟 SW_SHOWNORMAL 很相似
SW_SHOWNORMAL1. 激活并显示一个窗口
2. 如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小
3. 应用程序在第一次显示窗口的时候应该指定此标志


返回值:

1. 如果窗口之前可见,则返回值为非 0;

2. 如果窗口之前被隐藏,则返回值为 0。

【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

WinSDK

cuibaowenown2 发表于 2014-5-16 10:35:15

沙发是我的:big{:5_101:}{:5_90:}

xqlsrjjjh 发表于 2014-5-16 13:13:00

:lol:第二个沙发

小甲鱼 发表于 2014-5-16 17:35:21

xqlsrjjjh 发表于 2014-5-16 13:13 static/image/common/back.gif
第二个沙发

第二位请坐板凳~

purplepower99 发表于 2014-11-30 11:58:07

:lol::titter:

freethinker 发表于 2015-1-25 16:23:05

大神,你是瓦塔库西的呕像

0八戒0 发表于 2015-2-6 21:47:15

甲鱼哥 视频教程里的代码是ShowWindow(hwnd, iCmdShow) 上面的是nCmdShow 请问iCmdShow和nCmdShow 有什么区别?

avatar10010 发表于 2015-3-2 16:35:08

问一下SW_MAXIMIZE和WS_MAXIMIZE的区别

99502 发表于 2015-3-18 23:19:00

maikehong 发表于 2015-3-29 10:43:45

甲鱼大神级别的你好:那个窗口!窗口!,讲的太了,我一下子就能听懂。知道我是为什么回来学WINDOWS编程吗,是我在win32汇编那个窗口,太难了,才回来学的,今天第二天,一下就懂。真的是那句话 I Love FishC.com:big

chenfengdou 发表于 2015-11-15 16:03:13

{:9_231:}

world1024 发表于 2016-5-10 21:44:49

不是很理解SW_HIDE

fanzhihao 发表于 2016-6-2 17:51:01

真好,小鱼哥

疾风。意破天晴 发表于 2016-8-4 09:46:48

{:5_92:} {:5_107:} {:5_92:}

gaoshua3011 发表于 2016-10-8 21:00:47

疾风。意破天晴 发表于 2016-8-4 09:46


不知道几楼{:10_245:}

谦虚求学 发表于 2016-10-20 12:01:41

{:5_95:}

轩~ 发表于 2017-4-19 15:06:40

感谢分享!

BngThea 发表于 2017-7-6 13:23:03

路过学习

溯影 发表于 2018-4-20 17:06:19

感谢小甲鱼哈哈{:10_254:}

ZHGHNG 发表于 2020-8-6 11:44:29

        static int cxClient, cyClient;
        switch (message)
        {
        case WM_SIZE:
                cxClient = LOWORD(lParam);
                cyClient = HIWORD(lParam);
                return 0;
        case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                MoveToEx(hdc,0,cyClient/2,NULL);
                LineTo(hdc, cxClient, cyClient / 2);
                EndPaint(hwnd, &ps);
                return 0;

ShowWindow(hwnd)会发送WM_SIZE消息,但是我的程序运行没有显示出图形,移动一下窗口,改变一下大小才会绘制图形,感觉是因为没有经过WM_SIZE,没有给cxClient,cyClient赋值导致的,但是我断点调试时发现有WM_SIZE,也就是说调试是正常的,开始执行(不调试会有问题),到底是什么原因?求大神给予解答?是不是这个函数有什么特性?
页: [1] 2
查看完整版本: ShowWindow