以下显示窗口的方法有什么区别:
ShowWindow函数。SetWindowPos标志的SWP_SHOWWINDOW函数。SetWindowLong函数与WS_VISIBLE添加到GWL_STYLE.中还有其他方法吗?
发布于 2013-04-28 11:54:40
我认为它们基本上是相同的,但每一个都有更多的功能:
SetWindowLong中的WS_VISIBLE显然是最不有趣的:如果有一个完全满足您需要的函数,那么为什么要处理样式位呢?SetWindowPos with SWP_SHOWWINDOW允许您通过一个原子操作同时显示窗口并设置其位置和大小,这样没有一个程序或用户可以看到可见的--未移动或移动--不可见的窗口。ShowWindow函数有很多神奇之处,特别是在程序中第一次调用它时。另外,它的SW_SHOWDEFAULT标志很少使用,但对任何其他方法AFAIK都是不可用的。还有其他使窗口可见的方法。从我的脑海中:
WS_VISIBLE标志创建它。DeferWindowPos具有与SetWindowPos相同的标志。发布于 2013-04-28 11:56:36
SetWindowLong函数设置初始窗口样式,即创建后窗口是否会立即出现。MSDN说,在创建窗口之后,您必须使用其他两个函数来设置可视属性。一个典型的用途是:
case WM_CREATE:
{
long style = GetWindowLong(hWnd, GWL_STYLE);
SetWindowLong(hWnd, GWL_STYLE, style | WS_DLGFRAME);
return 0;
}ShowWindow和SetWindowPos在窗口可见性方面具有重叠的功能。如果您必须在设置其可见性的同时以x、y或z方向移动窗口,则使用SetWindowPos。我个人认为需要指定必要的uFlags参数使得这个函数的使用有点麻烦,但是MSDN是您的朋友;)
另一方面,如果您根本不需要窗口移动,而是要最大化、最小化、恢复等等,请使用ShowWindow。因为它只使用窗口句柄和nCmdShow常量作为参数,所以它是一个易于使用的函数。
https://stackoverflow.com/questions/16262330
复制相似问题