首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ShowWindow对SWP_SHOWWINDOW对WS_VISIBLE

ShowWindow对SWP_SHOWWINDOW对WS_VISIBLE
EN

Stack Overflow用户
提问于 2013-04-28 11:23:00
回答 2查看 6.5K关注 0票数 5

以下显示窗口的方法有什么区别:

  • ShowWindow函数。
  • 带有SetWindowPos标志的SWP_SHOWWINDOW函数。
  • SetWindowLong函数与WS_VISIBLE添加到GWL_STYLE.中

还有其他方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-28 11:54:40

我认为它们基本上是相同的,但每一个都有更多的功能:

  1. 添加到SetWindowLong中的WS_VISIBLE显然是最不有趣的:如果有一个完全满足您需要的函数,那么为什么要处理样式位呢?
  2. SetWindowPos with SWP_SHOWWINDOW允许您通过一个原子操作同时显示窗口并设置其位置和大小,这样没有一个程序或用户可以看到可见的--未移动或移动--不可见的窗口。
  3. ShowWindow函数有很多神奇之处,特别是在程序中第一次调用它时。另外,它的SW_SHOWDEFAULT标志很少使用,但对任何其他方法AFAIK都是不可用的。

还有其他使窗口可见的方法。从我的脑海中:

  1. 使用设置的WS_VISIBLE标志创建它。
  2. DeferWindowPos具有与SetWindowPos相同的标志。
票数 7
EN

Stack Overflow用户

发布于 2013-04-28 11:56:36

SetWindowLong函数设置初始窗口样式,即创建后窗口是否会立即出现。MSDN说,在创建窗口之后,您必须使用其他两个函数来设置可视属性。一个典型的用途是:

代码语言:javascript
复制
case WM_CREATE:
{
    long style = GetWindowLong(hWnd, GWL_STYLE);
    SetWindowLong(hWnd, GWL_STYLE, style | WS_DLGFRAME);

    return 0;
}

ShowWindowSetWindowPos在窗口可见性方面具有重叠的功能。如果您必须在设置其可见性的同时以x、y或z方向移动窗口,则使用SetWindowPos。我个人认为需要指定必要的uFlags参数使得这个函数的使用有点麻烦,但是MSDN是您的朋友;)

另一方面,如果您根本不需要窗口移动,而是要最大化、最小化、恢复等等,请使用ShowWindow。因为它只使用窗口句柄和nCmdShow常量作为参数,所以它是一个易于使用的函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16262330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档