if (!hPrevInstance)

 在一些Windows范例程序中,您可能在WinMain中看到以下程序代码:
if (!hPrevInstance)
        
{
        
    wndclass.cbStyle = CS_HREDRAW | CS_VREDRAW ;
        
           初始化其它 wndclass
        

    RegisterClass (&wndclass) ;
        
}
        

这是出于「旧习难改」的原因。在16位的Windows中,如果您启动正在执行的程序的一个新执行实体,WinMain的hPrevInstance参数将是前一个执行实体的执行实体句柄。为节省内存,两个或多个执行实体就可能会共享相同的窗口类别。这样,窗口类别就只在hPrevInstance是NULL的时候才注册,这表明程序没有其它执行实体。

在32位的Windows中,hPrevInstance总是NULL。此程序代码会正常执行,而实际上也没必要检查hPrevInstance。

你可能感兴趣的:(windows,null)