瀏覽代碼

handle Alt-Tab switching away from panda

cxgeorge 25 年之前
父節點
當前提交
96e7d7dede

+ 10 - 1
panda/src/display/graphicsStateGuardian.cxx

@@ -63,12 +63,13 @@ release_all_textures() {
   // each call to release_texture() will remove that texture from the
   // list, and we don't want to traverse a list while we're modifying
   // it!
+
   Textures temp = _prepared_textures;
   for (Textures::const_iterator ti = temp.begin();
        ti != temp.end();
        ++ti) {
     release_texture(*ti);
-  }
+  } 
 
   // Now that we've released all of the textures, the
   // _prepared_textures list should have completely emptied itself.
@@ -413,6 +414,14 @@ unmark_prepared_texture(TextureContext *tc) {
   return (_prepared_textures.erase(tc) != 0);
 }
 
+void GraphicsStateGuardian::traverse_prepared_textures(bool (*pertex_callbackfn)(TextureContext *,void *),void *callback_arg) {
+	for (Textures::const_iterator ti = _prepared_textures.begin(); ti != _prepared_textures.end();
+		 ++ti) {
+		bool bResult=(*pertex_callbackfn)(*ti,callback_arg);
+		if(!bResult)
+		   return;
+	} 
+}
 
 ////////////////////////////////////////////////////////////////////
 //     Function: GraphicsStateGuardian::get_factory

+ 5 - 2
panda/src/display/graphicsStateGuardian.h

@@ -155,9 +155,12 @@ protected:
 
   CoordinateSystem _coordinate_system;
 
-protected:
+private:
   typedef set<TextureContext *> Textures;
-  Textures _prepared_textures;
+  Textures _prepared_textures;  // NOTE: on win32 another DLL (e.g. libpandadx.dll) cannot access set directly due to exported template issue
+
+public:
+	void traverse_prepared_textures(bool (*pertex_callbackfn)(TextureContext *,void *),void *callback_arg);
 
 // factory stuff
 public:

+ 1 - 1
panda/src/dxgsg/Sources.pp

@@ -8,7 +8,7 @@
   #define TARGET dxgsg
   #define LOCAL_LIBS \
     cull gsgmisc gsgbase gobj sgattrib sgraphutil graph display light \
-    putil linmath sgraph mathutil pnmimage
+    putil linmath sgraph mathutil pnmimage event
 
   #define SOURCES \
     config_dxgsg.cxx config_dxgsg.h dxGraphicsStateGuardian.I \

+ 203 - 135
panda/src/dxgsg/dxGraphicsStateGuardian.cxx

@@ -64,6 +64,7 @@
 #include <cullFaceTransition.h>
 #include <stencilAttribute.h>
 #include <stencilTransition.h>
+#include <throw_event.h>
 
 #include <pandabase.h>
 
@@ -914,6 +915,23 @@ typedef enum {
 	FlatVerts,IndexedVerts,MixedFmtVerts
 } GeomVertFormat;
 
+#ifdef _DEBUG
+typedef enum {DrawPrim,DrawPrimStrided} DP_Type;
+
+void INLINE TestDrawPrimFailure(DP_Type dptype,HRESULT hr,LPDIRECTDRAW7 pDD) {
+		if(FAILED(hr)) {
+			// loss of exclusive mode is not a real DrawPrim problem
+			HRESULT testcooplvl_hr = pDD->TestCooperativeLevel();
+			if((testcooplvl_hr != DDERR_NOEXCLUSIVEMODE)||(testcooplvl_hr != DDERR_EXCLUSIVEMODEALREADYSET)) {
+				dxgsg_cat.fatal() << ((dptype==DrawPrimStrided) ? "DrawPrimStrided" : "DrawPrim") << "failed: result = " << ConvD3DErrorToString(hr) << endl;
+			}
+			exit(1);
+		}
+}
+#else
+#define TestDrawPrimFailure(a,b,c)
+#endif
+
 ////////////////////////////////////////////////////////////////////
 //     Function: DXGraphicsStateGuardian::draw_point
 //       Access: Public, Virtual
@@ -992,7 +1010,18 @@ draw_point(const GeomPoint *geom) {
 		// iterate through the point
 		draw_prim_inner_loop2(nPrims, geom, perPrim);
 
-		_d3dDevice->DrawPrimitive(D3DPT_POINTLIST, p_flags, _pFvfBufBasePtr, nPrims, NULL);
+		HRESULT hr = _d3dDevice->DrawPrimitive(D3DPT_POINTLIST, p_flags, _pFvfBufBasePtr, nPrims, NULL);
+
+	  #ifdef _DEBUG
+		if(FAILED(hr)) {
+			// loss of exclusive mode is not a real DrawPrim problem
+			HRESULT testcooplvl_hr = _pDD->TestCooperativeLevel();
+			if((testcooplvl_hr != DDERR_NOEXCLUSIVEMODE)||(testcooplvl_hr != DDERR_EXCLUSIVEMODEALREADYSET)) {
+				dxgsg_cat.fatal() << "DrawPrim failed: result = " << ConvD3DErrorToString(hr) << endl;
+			}
+			exit(1);
+		}
+	  #endif
 	} else {
 
 		size_t vertex_size = draw_prim_setup(geom);
@@ -1030,7 +1059,8 @@ draw_point(const GeomPoint *geom) {
 			dps_data.textureCoords[0].dwStride = sizeof(TexCoordf);
 		}
 
-		_d3dDevice->DrawPrimitiveStrided(D3DPT_POINTLIST, p_flags, &dps_data, nPrims, NULL);
+		HRESULT hr = _d3dDevice->DrawPrimitiveStrided(D3DPT_POINTLIST, p_flags, &dps_data, nPrims, NULL);
+	    TestDrawPrimFailure(DrawPrimStrided,hr,_pDD);
 	}
 
 	_pCurFvfBufPtr = NULL;
@@ -1132,12 +1162,15 @@ draw_line(const GeomLine* geom) {
 		draw_prim_inner_loop(2, geom);
 	}
 
-	if (_tmp_fvf == NULL)
-		_d3dDevice->DrawPrimitive(D3DPT_LINELIST, p_flags, _pFvfBufBasePtr, nPrims*2, NULL);
+	HRESULT hr;
+
+	if (_tmp_fvf == NULL) 
+		hr = _d3dDevice->DrawPrimitive(D3DPT_LINELIST, p_flags, _pFvfBufBasePtr, nPrims*2, NULL);
 	else {
-		_d3dDevice->DrawPrimitive(D3DPT_LINELIST, p_flags, _tmp_fvf, nPrims*2, NULL);
+		hr = _d3dDevice->DrawPrimitive(D3DPT_LINELIST, p_flags, _tmp_fvf, nPrims*2, NULL);
 		delete [] _tmp_fvf;
 	}
+	TestDrawPrimFailure(DrawPrim,hr,_pDD);
 
 	_pCurFvfBufPtr = NULL;
 
@@ -1259,7 +1292,8 @@ draw_linestrip(const GeomLinestrip* geom) {
 
 		draw_prim_inner_loop2(nVerts, geom, perComp);
 
-		_d3dDevice->DrawPrimitive(D3DPT_LINESTRIP,  p_flags, _pFvfBufBasePtr, nVerts, NULL);
+		HRESULT hr = _d3dDevice->DrawPrimitive(D3DPT_LINESTRIP,  p_flags, _pFvfBufBasePtr, nVerts, NULL);
+	    TestDrawPrimFailure(DrawPrim,hr,_pDD);
 
 		_pCurFvfBufPtr = NULL;
 	}
@@ -1990,6 +2024,7 @@ draw_tri(const GeomTri *geom) {
 		}
 
 		hr = _d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, p_flags, _pFvfBufBasePtr, nPrims*3, NULL);
+	    TestDrawPrimFailure(DrawPrim,hr,_pDD);
 
 		_pCurFvfBufPtr = NULL;
 	} else {
@@ -2143,11 +2178,7 @@ draw_tri(const GeomTri *geom) {
 		set_shademode(NeededShadeMode);
 
 		hr = _d3dDevice->DrawPrimitiveStrided(primtype, fvf_flags, &dps_data, nPrims*dwVertsPerPrim, NULL);
-
-		if (FAILED(hr)) {
-			dxgsg_cat.fatal() << "DrawPrimStrided failed: result = " << ConvD3DErrorToString(hr) << endl;
-			exit(1);
-		}
+	    TestDrawPrimFailure(DrawPrimStrided,hr,_pDD);
 
 		_pCurFvfBufPtr = NULL;
 	}
@@ -2166,7 +2197,8 @@ draw_tri(const GeomTri *geom) {
 	_d3dDevice->SetTextureStageState(0,D3DTSS_BORDERCOLOR,D3DRGBA(0,0,0,0));
 
 	p_flags =  D3DFVF_XYZ | (D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0)) ;
-	_d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,  p_flags, vert_buf, nPrims*3, NULL);
+	HRESULT hr = _d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,  p_flags, vert_buf, nPrims*3, NULL);
+    TestDrawPrimFailure(DrawPrim,hr,_pDD);
 #endif
 }
 
@@ -2386,7 +2418,8 @@ draw_multitri(const Geom *geom, D3DPRIMITIVETYPE trilisttype) {
 			// Store remaining vertices
 			draw_prim_inner_loop2(nVerts-3, geom, perComp);
 
-			_d3dDevice->DrawPrimitive(trilisttype,  p_flags, _pFvfBufBasePtr, nVerts, NULL);
+			HRESULT hr = _d3dDevice->DrawPrimitive(trilisttype,  p_flags, _pFvfBufBasePtr, nVerts, NULL);
+			TestDrawPrimFailure(DrawPrim,hr,_pDD);
 
 			_pCurFvfBufPtr = NULL;
 		}
@@ -2587,13 +2620,8 @@ draw_multitri(const Geom *geom, D3DPRIMITIVETYPE trilisttype) {
 			const int cCurNumStripVerts = pLengthArr[j];
 
 			hr = _d3dDevice->DrawPrimitiveStrided(trilisttype, fvf_flags, &dps_data, cCurNumStripVerts, NULL);
+			TestDrawPrimFailure(DrawPrimStrided,hr,_pDD);
 
-#ifdef _DEBUG
-			if (FAILED(hr)) {
-				dxgsg_cat.fatal() << "DrawPrimStrided failed: result = " << ConvD3DErrorToString(hr) << endl;
-				exit(1);
-			}
-#endif
 			dps_data.position.lpvData = (VOID*)(((char*) dps_data.position.lpvData) + cCurNumStripVerts*dps_data.position.dwStride); 
 			dps_data.diffuse.lpvData = (VOID*)(((char*) dps_data.diffuse.lpvData) + cCurNumStripVerts*dps_data.diffuse.dwStride);
 			dps_data.normal.lpvData = (VOID*)(((char*) dps_data.normal.lpvData) + cCurNumStripVerts*dps_data.normal.dwStride); 
@@ -2937,11 +2965,6 @@ issue_alpha_transform(const AlphaTransformAttribute *attrib) {
 	}
 }
 
-
-
-
-
-
 ////////////////////////////////////////////////////////////////////
 //     Function: DXGraphicsStateGuardian::prepare_texture
 //       Access: Public, Virtual
@@ -2965,7 +2988,7 @@ prepare_texture(Texture *tex) {
 	specify_texture(tex);
 	apply_texture_immediate(tex);
 #else
-	if (gtc->CreateTexture(_hdc, _d3dDevice,_cNumTexPixFmts,_pTexPixFmts) == NULL) {
+	if (gtc->CreateTexture(_d3dDevice,_cNumTexPixFmts,_pTexPixFmts) == NULL) {
 		delete gtc;
 		return NULL;
 	}
@@ -2994,15 +3017,14 @@ apply_texture(TextureContext *tc) {
 	}
 
 //  activate();  inactive
-
-#ifdef WBD_GL_MODE
-	bind_texture(tc);
-#else
+//	bind_texture(tc);
 
 //  specify_texture(tc->_texture);
 	// Note: if this code changes, make sure to change initialization SetTSS code in init_dx as well
 	// so DX TSS renderstate matches dxgsg state
 
+	DXTextureContext *dtc = DCAST(DXTextureContext, tc);  
+	
 	Texture *tex = tc->_texture;
 	Texture::WrapMode wrapU,wrapV;
 	wrapU=tex->get_wrapu();
@@ -3071,6 +3093,13 @@ apply_texture(TextureContext *tc) {
 				dxgsg_cat.error() << "Unknown tex filter type for tex: " << tex->get_name() << "  filter: "<<(DWORD)ft<<"\n";
 		}
 
+		#ifdef _DEBUG
+			if((!(dtc->_bHasMipMaps))&&(mipfilter!=D3DTFP_NONE)) {
+				dxgsg_cat.error() << "Trying to set mipmap filtering for texture with no generated mipmaps!! texname:" << tex->get_name() << "  filter: "<<(DWORD)ft<<"\n";
+				mipfilter=D3DTFP_NONE;
+			}
+		#endif
+
 		if (aniso_degree>1) {
 			minfilter=D3DTFN_ANISOTROPIC;
 		}
@@ -3079,8 +3108,6 @@ apply_texture(TextureContext *tc) {
 		_d3dDevice->SetTextureStageState(0, D3DTSS_MIPFILTER, mipfilter);
 	}
 
-	DXTextureContext *dtc = DCAST(DXTextureContext, tc);
-
 	// bugbug:  does this handle the case of untextured geometry? 
 	//          we dont see this bug cause we never mix textured/untextured
 
@@ -3092,12 +3119,8 @@ apply_texture(TextureContext *tc) {
 #endif
 
 	_pCurTexContext = dtc;	 // enable_texturing needs this
-
-#endif
 }
 
-
-
 ////////////////////////////////////////////////////////////////////
 //     Function: DXGraphicsStateGuardian::release_texture
 //       Access: Public, Virtual
@@ -3894,8 +3917,9 @@ issue_transform(const TransformAttribute *attrib) {
 			{0.0, 0.0, 3.0,  0.0, -1.0, 0.0,  D3DRGBA(0.0, 0.0, 1.0, 1.0)},	   // blu
 		};
 
-		_d3dDevice->DrawPrimitive(D3DPT_LINELIST, D3DFVF_DIFFUSE | D3DFVF_XYZ | D3DFVF_NORMAL,
+		HRESULT hr = _d3dDevice->DrawPrimitive(D3DPT_LINELIST, D3DFVF_DIFFUSE | D3DFVF_XYZ | D3DFVF_NORMAL,
 								  vert_buf, 6, NULL);
+		TestDrawPrimFailure(DrawPrim,hr,_pDD);
 
 		enable_lighting(lighting_was_enabled);
 		enable_texturing(texturing_was_enabled);
@@ -5252,11 +5276,41 @@ dx_setup_after_resize(RECT viewrect, HWND mwindow) {
 	hr = _d3dDevice->SetViewport( &vp );
 	if (hr != DD_OK) {
 		dxgsg_cat.fatal()
-		<< "DXGraphicsStateGuardian::config() - SetViewport failed : result = " << ConvD3DErrorToString(hr) << endl;
+		<< "DXGraphicsStateGuardian:: SetViewport failed : result = " << ConvD3DErrorToString(hr) << endl;
 		exit(1);
 	}
 }
 
+bool refill_tex_callback(TextureContext *tc,void *void_dxgsg_ptr) {
+	 DXTextureContext *dtc = DCAST(DXTextureContext, tc);  
+//	 DXGraphicsStateGuardian *dxgsg = (DXGraphicsStateGuardian *)void_dxgsg_ptr;
+
+ 	 // Re-fill the contents of textures and vertex buffers
+	 // which just got restored now.
+     HRESULT hr=dtc->FillDDSurfTexturePixels();
+	 return hr==S_OK;
+}
+
+HRESULT DXGraphicsStateGuardian::RestoreAllVideoSurfaces(void) {
+  // BUGBUG: this should also restore vertex buffer contents when they are implemented
+  // You will need to destroy and recreate
+  // optimized vertex buffers however, restoring is not enough.
+
+  HRESULT hr;
+
+  // note: could go through and just restore surfs that return IsLost() true
+  // apparently that isnt as reliable w/some drivers tho
+  if (FAILED(hr = _pDD->RestoreAllSurfaces() )) {
+		dxgsg_cat.fatal()
+		<< "DXGraphicsStateGuardian:: RestoreAllSurfs failed : result = " << ConvD3DErrorToString(hr) << endl;
+	return hr;
+  }
+
+  // cant access template in libpanda.dll directly due to vc++ limitations, use traverser to get around it
+  traverse_prepared_textures(refill_tex_callback,this);
+  return S_OK;
+}
+
 
 ////////////////////////////////////////////////////////////////////
 //     Function: show_frame 
@@ -5264,123 +5318,137 @@ dx_setup_after_resize(RECT viewrect, HWND mwindow) {
 //       Description:   Repaint primary buffer from back buffer  (windowed mode only)
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian::show_frame(void) {
-
 	PStatTimer timer(_win->_swap_pcollector);  // this times just the flip, so it must go here in dxgsg, instead of wdxdisplay, which would time the whole frame
 
-	if (_pri!=NULL) {
-		if (dx_full_screen) {
+	if(_pri==NULL)
+		return;
+
+	if(dx_full_screen) {
+		HRESULT hr = _pri->Flip( NULL, DDFLIP_WAIT );  // bugbug:  dont we want triple buffering instead of wasting time waiting for vsync?
 
-			HRESULT hr = _pri->Flip( NULL, DDFLIP_WAIT );  // bugbug:  dont we want triple buffering instead of wasting time waiting for vsync?
-			if (hr == DDERR_SURFACELOST || hr == DDERR_SURFACEBUSY) {
-#if 0
-				if (hr == DDERR_SURFACELOST || hr == DDERR_SURFACEBUSY) {
-					HRESULT hr;
-
-					// TestCooperativeLevel returns DD_OK: If the current mode is same as the one which the App set.
-					// The following two errors are returned to NORMALMODE (windowed)apps only.
-					//
-					// DDERR_WRONGMODE: If the App is a windowed app and the current mode is
-					//                  not the same as the one in which the app was created.
-					// DDERR_EXCLUSIVEMODEALREADYSET: If another app took exclusivemode access
-					//
-					// The following error is returned only for exclusivemode apps.
-					// DDERR_NOEXCLUSIVEMODE: Some other app took exclusive mode.
-					//
-					hr = _pDD->TestCooperativeLevel();
-					if (SUCCEEDED( hr )) {
+		if(hr == DDERR_SURFACELOST || hr == DDERR_SURFACEBUSY) {
+			//full screen app has been switched away
+			HRESULT hr;
+
+			// TestCooperativeLevel returns DD_OK: If the current mode is same as the one which the App set.
+			// The following error is returned only for exclusivemode apps.
+			// DDERR_NOEXCLUSIVEMODE: Some other app took exclusive mode.
+			hr = _pDD->TestCooperativeLevel();
+
+			while(hr == DDERR_NOEXCLUSIVEMODE) {
 						// This means that mode changes had taken place, surfaces
 						// were lost but still we are in the original mode, so we
 						// simply restore all surfaces and keep going.
+				_dx_ready = FALSE;
 
+				#ifdef _DEBUG
+				  dxgsg_cat.spam() << "DXGraphicsStateGuardian:: no exclusive mode, waiting...\n";
+				#endif
+						
+				Sleep( 500 );	// Dont consume CPU.
+				throw_event("PandaPaused");   // throw panda event to invoke network-only processing
 
+				_win->process_events();
+				hr = _pDD->TestCooperativeLevel();
+			}
 
-						if (FAILED( m_pDD->RestoreAllSurfaces() ))
-							return hr;
-
-						// Re-fill the contents of textures and vertex buffers
-						// which just got restored now.
-						// You will need to destroy and recreate
-						// optimized vertex buffers however, restoring is not enough.
-						RefillAppSurfaces();
-					} else if (hr == DDERR_NOEXCLUSIVEMODE) {
-						// This means that some app took exclusive mode access
-						// we need to sit in a loop till we get back to the right mode.
-						do {
-							// Dont consume CPU.
-							Sleep( 500 );
-						} while (DDERR_NOEXCLUSIVEMODE==
-								 (hr = m_pDD->TestCooperativeLevel()));
-						if (SUCCEEDED( hr )) {
-							// This means that the exclusive mode app relinquished its
-							// control and we are back to the safe mode, so simply restore
-							if (FAILED( m_pDD->RestoreAllSurfaces() ))
-								return hr;
-							// Re-fill the contents of textures and vertex buffers
-							// which just got restored now.
-							// You will need to destroy and recreate
-							// optimized vertex buffers however, restoring is not enough.
-							RefillAppSurfaces();
-						} else {
-							// Busted!!
-							return hr;
-						}
-					} else {
-						// Busted!!
-						return hr;
-					}
-				}
+			if(FAILED(hr)) {
+				dxgsg_cat.error() << "DXGraphicsStateGuardian::unexpected return code from TestCoopLevel: " << ConvD3DErrorToString(hr) << endl;   
+				return;
+			}
 
-#endif
+			#ifdef _DEBUG
+			   dxgsg_cat.debug() << "DXGraphicsStateGuardian:: regained exclusive mode, refilling surfs...\n";
+			#endif
+			
+			RestoreAllVideoSurfaces();
+
+			#ifdef _DEBUG
+			   dxgsg_cat.debug() << "DXGraphicsStateGuardian:: refill done...\n";			
+			#endif
+			
+			_dx_ready = TRUE;
+			
+			return;	 // need to re-render scene before we can display it
+		}
 
+		if(hr != DD_OK) {
+			dxgsg_cat.error() << "DXGraphicsStateGuardian::show_frame() - Flip failed w/unexpected error code: " << ConvD3DErrorToString(hr) << endl;
+			exit(1);
+		}
 
-				// Check/restore the primary surface
-				if (( _pri!=NULL ) && _pri->IsLost())
-					_pri->Restore();
-				// Check/restore the back buffer
-				if (( _back!=NULL ) &&  _back->IsLost())
-					_back->Restore();
-				// Check/restore the z-buffer
-				if (( _zbuf!=NULL ) &&  _zbuf->IsLost())
-					_zbuf->Restore();
-				return;
-			}
+	} else {
+		DX_DECLARE_CLEAN(DDBLTFX, bltfx);
 
-			if (hr != DD_OK) {
-				dxgsg_cat.error() << "DXGraphicsStateGuardian::show_frame() - Flip failed : " << ConvD3DErrorToString(hr) << endl;
-				exit(1);
-			}
+		bltfx.dwDDFX |= DDBLTFX_NOTEARING;
+		HRESULT hr = _pri->Blt( &_view_rect, _back,  NULL, DDBLT_DDFX | DDBLT_WAIT, &bltfx );
 
-		} else {
-			DX_DECLARE_CLEAN(DDBLTFX, bltfx);
-
-			bltfx.dwDDFX |= DDBLTFX_NOTEARING;
-			HRESULT hr = _pri->Blt( &_view_rect, _back,  NULL, DDBLT_DDFX | DDBLT_WAIT, &bltfx );
-			if (hr!=DD_OK) {
-				if (hr == DDERR_SURFACELOST) {
-					// Check/restore the primary surface
-					if (( _pri!=NULL ) && _pri->IsLost())
-						_pri->Restore();
-					// Check/restore the back buffer
-					if (( _back!=NULL ) &&  _back->IsLost())
-						_back->Restore();
-					// Check/restore the z-buffer
-					if (( _zbuf!=NULL ) &&  _zbuf->IsLost())
-						_zbuf->Restore();
-					return;
-				} else {
-					dxgsg_cat.error() << "DXGraphicsStateGuardian::show_frame() - Blt failed : " << ConvD3DErrorToString(hr) << endl;
+		if(FAILED(hr)) {
+			if(hr == DDERR_SURFACELOST || hr == DDERR_SURFACEBUSY) {
+
+				HRESULT hr;
+
+			// TestCooperativeLevel returns DD_OK: If the current mode is same as the one which the App set.
+			// The following two errors are returned to NORMALMODE (windowed)apps only.
+			//
+			// DDERR_WRONGMODE: If the App is a windowed app and the current mode is
+			//                  not the same as the one in which the app was created.
+			// DDERR_EXCLUSIVEMODEALREADYSET: If another app took exclusivemode access
+				hr = _pDD->TestCooperativeLevel();
+				while(hr == DDERR_EXCLUSIVEMODEALREADYSET) {
+				// This means that mode changes had taken place, surfaces
+				// were lost but still we are in the original mode, so we
+				// simply restore all surfaces and keep going.
+
+					_dx_ready = FALSE;
+	
+				#ifdef _DEBUG
+					dxgsg_cat.spam() << "DXGraphicsStateGuardian:: another app has exclusive mode, waiting...\n";
+				#endif
+							
+					Sleep( 500 );	// Dont consume CPU.
+					throw_event("PandaPaused");   // throw panda event to invoke network-only processing
+
+					hr = _pDD->TestCooperativeLevel();
+				}
+
+				if(hr==DDERR_WRONGMODE) {
+				// This means that the desktop mode has changed
+				// need to destroy all of dx stuff and recreate everything back again, which is a big hit
+					dxgsg_cat.error() << "DXGraphicsStateGuardian:: detected display mode change in TestCoopLevel, must recreate all DDraw surfaces, D3D devices, this is not handled yet.  " << ConvD3DErrorToString(hr) << endl;   
 					exit(1);
+					return;
 				}
-			}
-			// right now, we force sync to v-blank  (time from now up to vblank is wasted)
-			// this keeps calling processes from trying to render more frames than the refresh
-			// rate since (as implemented right now) they expect this call to block
-			hr =  _pDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL);
-			if (hr != DD_OK) {
-				dxgsg_cat.error() << "DXGraphicsStateGuardian::WaitForVerticalBlank() failed : " << ConvD3DErrorToString(hr) << endl;
+
+				if(FAILED(hr)) {
+					dxgsg_cat.error() << "DXGraphicsStateGuardian::unexpected return code from TestCoopLevel: " << ConvD3DErrorToString(hr) << endl;   
+					return;
+				}
+
+			#ifdef _DEBUG
+			    dxgsg_cat.debug() << "DXGraphicsStateGuardian:: other app relinquished exclusive mode, refilling surfs...\n";
+			#endif
+				RestoreAllVideoSurfaces();  
+			#ifdef _DEBUG
+			    dxgsg_cat.debug() << "DXGraphicsStateGuardian:: refill done...\n";			
+			#endif
+
+				_dx_ready = TRUE;
+				return;	 // need to re-render scene before we can display it
+			} else {
+				dxgsg_cat.error() << "DXGraphicsStateGuardian::show_frame() - Blt failed : " << ConvD3DErrorToString(hr) << endl;
 				exit(1);
 			}
 		}
+
+		// right now, we force sync to v-blank  (time from now up to vblank is wasted)
+		// this keeps calling processes from trying to render more frames than the refresh
+		// rate since (as implemented right now) they expect this call to block
+		hr =  _pDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, NULL);
+		if(hr != DD_OK) {
+			dxgsg_cat.error() << "DXGraphicsStateGuardian::WaitForVerticalBlank() failed : " << ConvD3DErrorToString(hr) << endl;
+			exit(1);
+		}
 	}
 }
 

+ 3 - 1
panda/src/dxgsg/dxGraphicsStateGuardian.h

@@ -220,6 +220,7 @@ protected:
 					D3DVECTOR *pCenter, float fRadius, 
 					DWORD wNumRings, DWORD wNumSections, float sx, float sy, float sz,
 					DWORD *pNumVertices,DWORD *pNumIndices,DWORD fvfFlags,DWORD dwVertSize);
+  HRESULT DXGraphicsStateGuardian::RestoreAllVideoSurfaces(void);
 
   INLINE void set_pack_alignment(int alignment);
   INLINE void set_unpack_alignment(int alignment);
@@ -379,7 +380,8 @@ public:
   LPDIRECTDRAWSURFACE7 GetZBuffer()  {  return _zbuf; }
   INLINE void  Set_HDC(HDC hdc)  {  _hdc = hdc;  }
   void adjust_view_rect(int x, int y);
-  INLINE void SetDXStatus(bool stat)  {  _dx_ready = stat; }
+  INLINE void SetDXReady(bool stat)  {  _dx_ready = stat; }
+  INLINE bool GetDXReady(void)  { return _dx_ready;}
   void DXGraphicsStateGuardian::SetTextureBlendMode(TextureApplyProperty::Mode TexBlendMode,bool bJustEnable);
 
   void  dx_cleanup();

+ 57 - 46
panda/src/dxgsg/dxTextureContext.cxx

@@ -919,7 +919,7 @@ HRESULT ConvertDDSurftoPixBuf(PixelBuffer *pixbuf,LPDIRECTDRAWSURFACE7 pDDSurf)
 //       texture, and then copies the bitmap into the texture.
 //-----------------------------------------------------------------------------
 LPDIRECTDRAWSURFACE7 DXTextureContext::
-CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts, LPDDPIXELFORMAT pTexPixFmts) {
+CreateTexture(LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts, LPDDPIXELFORMAT pTexPixFmts) {
 	HRESULT hr;
 	int i;
 	PixelBuffer *pbuf = _texture->_pbuffer;
@@ -1418,22 +1418,20 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 		ft=Texture::FT_nearest;
 	_tex->set_magfilter(ft);
 
-	BOOL bDoMipMaps;
-
 	// figure out if we are mipmapping this texture
 	ft =_tex->get_minfilter();
-	bDoMipMaps=FALSE;
+	_bHasMipMaps=FALSE;
 
 	if(!dx_ignore_mipmaps) {  // set if no HW mipmap capable
 #ifdef _DEBUG
-		bDoMipMaps=dx_mipmap_everything;
+		_bHasMipMaps=dx_mipmap_everything;
 #endif
 		switch(ft) {
 			case Texture::FT_nearest_mipmap_nearest:
 			case Texture::FT_linear_mipmap_nearest:
 			case Texture::FT_nearest_mipmap_linear:	 // pick nearest in each, interpolate linearly b/w them
 			case Texture::FT_linear_mipmap_linear:
-				bDoMipMaps=TRUE;
+				_bHasMipMaps=TRUE;
 		}
 	} else if((ft==Texture::FT_nearest_mipmap_nearest) ||	// cvt to no-mipmap filter types
 			  (ft==Texture::FT_nearest_mipmap_linear)) {
@@ -1486,7 +1484,7 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 	dxgsg_cat.spam() << "CreateTexture: setting aniso degree for "<< _tex->get_name() << " to: " << aniso_degree << endl;
 #endif
 
-	if(bDoMipMaps) {
+	if(_bHasMipMaps) {
 	   // We dont specify mipmapcount, so CreateSurface will auto-create surfs 
 	   // for all mipmaps down to 1x1 (if driver supports deep-mipmaps, otherwise Nx1)
 		ddsd.ddsCaps.dwCaps |= (DDSCAPS_MIPMAP | DDSCAPS_COMPLEX); 
@@ -1512,20 +1510,51 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 	dxgsg_cat.debug() << "CreateTexture: "<< _tex->get_name() <<" converted " << ConvNameStrs[ConvNeeded] << " \n";    
 #endif
 
-	hr = ConvertPixBuftoDDSurf(ConvNeeded,pbuf->_image.p(),_surface);
+	_PixBufConversionType=ConvNeeded;
+
+	hr = FillDDSurfTexturePixels();
 	if(FAILED(hr)) {
 		goto error_exit;
 	}
 
+	// Done with DDraw
+	pDD->Release();
+
+	// Return the newly created texture
+	return _surface;
+
+  error_exit:
+
+	if(pDD!=NULL)
+		pDD->Release();
+	if(_surface!=NULL) {
+		_surface->Release();
+		_surface = NULL;
+	}
+
+	return NULL;
+}
+
+HRESULT DXTextureContext::
+FillDDSurfTexturePixels(void) {
+	PixelBuffer *pbuf = _texture->_pbuffer;
+	DWORD cNumColorChannels = pbuf->get_num_components();
+
+	HRESULT hr = ConvertPixBuftoDDSurf((ConversionType)_PixBufConversionType,pbuf->_image.p(),_surface);
+	if(FAILED(hr))
+		return hr;
+
+	DX_DECLARE_CLEAN(DDSURFACEDESC2, ddsd);
+
 	_surface->GetSurfaceDesc(&ddsd);
 
-	if(bDoMipMaps) {
+	if(_bHasMipMaps) {
 		DWORD i,oldcurxsize,oldcurysize,curxsize,curysize,cMipMapCount=ddsd.dwMipMapCount;
 		assert(ddsd.dwMipMapCount<20);
 
 		curxsize=ddsd.dwWidth; curysize=ddsd.dwHeight;
 
-		assert(pixbuf_type==PixelBuffer::T_unsigned_byte);	 // cant handle anything else now
+		assert(pbuf->get_image_type()==PixelBuffer::T_unsigned_byte);	 // cant handle anything else now
 
 		// all mipmap sublevels require 1/3 of total original space. alloc 1/2 for safety
 		BYTE *pMipMapPixBufSpace = new BYTE[((curxsize*curysize*cNumColorChannels)/2)+1024];
@@ -1596,38 +1625,38 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 			ddsCaps.dwCaps = DDSCAPS_TEXTURE | DDSCAPS_MIPMAP;
 			ddsCaps.dwCaps2 = DDSCAPS2_MIPMAPSUBLEVEL;
 
-
 			hr = pCurDDSurf->GetAttachedSurface(&ddsCaps, &pMipLevel_DDSurf);
 			if(FAILED(hr)) {
 				dxgsg_cat.error() << "CreateTexture failed creating mipmaps: GetAttachedSurf hr = " << ConvD3DErrorToString(hr) << "\n";
+				delete pMipMapPixBufSpace;
 				pCurDDSurf->Release();
-				goto error_exit;
+				return hr;
 			}
 
-			hr = ConvertPixBuftoDDSurf(ConvNeeded,pLastMipLevelStart,pMipLevel_DDSurf);
+			hr = ConvertPixBuftoDDSurf((ConversionType)_PixBufConversionType,pLastMipLevelStart,pMipLevel_DDSurf);
 			if(FAILED(hr)) {
+				delete pMipMapPixBufSpace;
 				pCurDDSurf->Release();
-				goto error_exit;
+				return hr;
 			}
 
 			pCurDDSurf->Release();
 			pCurDDSurf=pMipLevel_DDSurf;
 		}
 
-//    finish1=clock();
-//   double elapsed_time  = (double)(finish1 - start1) / CLOCKS_PER_SEC;
-//   cerr <<  "mipmap gen takes " << elapsed_time << " secs for this texture\n";
-
-		pCurDDSurf->Release(); 
+		//   finish1=clock();
+		//   double elapsed_time  = (double)(finish1 - start1) / CLOCKS_PER_SEC;
+		//   cerr <<  "mipmap gen takes " << elapsed_time << " secs for this texture\n";
 
 		delete pMipMapPixBufSpace;
+		pCurDDSurf->Release(); 
 
 #ifdef _DEBUG
 		if(dx_debug_view_mipmaps) {
 #if 0
 			if(!(ddcaps.dwCaps & DDCAPS_BLTSTRETCH)) {
 				dxgsg_cat.error() << "CreateTexture failed debug-viewing mipmaps, BLT stretching not supported!  ( we need to do SW stretch) \n";
-				goto error_exit;
+				return hr;
 			}
 #endif
 
@@ -1646,7 +1675,6 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 
 			pTexturePrev->AddRef();
 
-
 			for(i = 0,curx=scrnrect.left,cury=scrnrect.top; i < ddsd.dwMipMapCount; i++) {
 
 				DX_DECLARE_CLEAN(DDSURFACEDESC2, ddsd_cur);
@@ -1659,12 +1687,10 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 				}
 
 				BOOL res;
-				// res = BitBlt(PrimaryDC,0,0,ddsd.dwWidth,ddsd.dwHeight, TexDC,0,0,SRCCOPY);
-				// loader inverts y, so use StretchBlt to re-invert it
-				// res = StretchBlt(PrimaryDC,0,ddsd_cur.dwHeight+cury,ddsd_cur.dwWidth,-ddsd_cur.dwHeight, TexDC,0,0,ddsd_cur.dwWidth,ddsd_cur.dwHeight,SRCCOPY);
+						// res = BitBlt(_dxgsg->_hdc,0,0,ddsd.dwWidth,ddsd.dwHeight, TexDC,0,0,SRCCOPY);
+						// loader inverts y, so use StretchBlt to re-invert it
+						// res = StretchBlt(_dxgsg->hdc,0,ddsd_cur.dwHeight+cury,ddsd_cur.dwWidth,-ddsd_cur.dwHeight, TexDC,0,0,ddsd_cur.dwWidth,ddsd_cur.dwHeight,SRCCOPY);
 #if 0
-
-				//        dxgsg_cat.error() << "WINVER = " << (void*)WINVER << "\n";
 				if(cNumAlphaBits>0) {
 					BLENDFUNCTION  bf;
 					bf.BlendOp = AC_SRC_OVER;  bf.BlendFlags=0; 
@@ -1685,7 +1711,7 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 
 					}
 				}
-//                SetBkMode(hScreenDC, TRANSPARENT);     
+		//                SetBkMode(hScreenDC, TRANSPARENT);     
 				sprintf(msg,"%d",i);
 				TextOut(hScreenDC,curx+(ddsd_cur.dwWidth)/2,5+cury+ddsd_cur.dwHeight,msg,strlen(msg));
 
@@ -1715,7 +1741,7 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 				if(FAILED(hr)) {
 					dxgsg_cat.error() << " failed displaying mipmaps: GetAttachedSurf hr = " << ConvD3DErrorToString(hr) << "\n";
 				}
-				// done with the previous texture
+						// done with the previous texture
 				pTexturePrev->Release();
 				pTexturePrev = pTextureCurrent;            
 			}
@@ -1737,26 +1763,11 @@ CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts,
 		}
 #endif
 	}
-
-	// Done with DDraw
-	pDD->Release();
-
-	// Return the newly created texture
-	return _surface;
-
-	error_exit:
-
-	if(pDD!=NULL)
-		pDD->Release();
-	if(_surface!=NULL) {
-		_surface->Release();
-		_surface = NULL;
-	}
-
-	return NULL;
+	return S_OK;
 }
 
 
+
 //-----------------------------------------------------------------------------
 // Name: DeleteTexture()
 // Desc: Release the surface used to store the texture
@@ -1780,6 +1791,7 @@ TextureContext(tex) {
 	dxgsg_cat.spam() << "Making DX texture for " << tex->get_name() << "\n";
 #endif
 	_surface = NULL;
+	_bHasMipMaps = FALSE;
 	_tex = tex;
 }
 
@@ -1793,4 +1805,3 @@ DXTextureContext::
 	_tex = NULL;
 }
 
-

+ 7 - 1
panda/src/dxgsg/dxTextureContext.h

@@ -32,10 +32,14 @@ public:
   LPDIRECTDRAWSURFACE7  _surface;
   Texture *_tex;            // ptr to parent, primarily for access to namestr
 
-  LPDIRECTDRAWSURFACE7 CreateTexture( HDC PrimaryDC, LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts, LPDDPIXELFORMAT pTexPixFmts);
+  LPDIRECTDRAWSURFACE7 CreateTexture(LPDIRECT3DDEVICE7 pd3dDevice, int cNumTexPixFmts, LPDDPIXELFORMAT pTexPixFmts);
        
   void DeleteTexture();
 
+  bool _bHasMipMaps;
+  DWORD _PixBufConversionType;  // enum ConversionType
+  HRESULT FillDDSurfTexturePixels(void);
+
 protected:
     unsigned int get_bits_per_pixel(PixelBuffer::Format format, int *alphbits);
 
@@ -55,6 +59,8 @@ public:
  
 private:
   static TypeHandle _type_handle;
+
+  friend class DXGraphicsStateGuardian;
 };
 
 

+ 8 - 0
panda/src/express/typeHandle.I

@@ -5,6 +5,10 @@
 
 #include "config_express.h"
 
+#if defined(_DEBUG) && defined(_WIN32)
+#include <windows.h>
+#endif
+
 // In general, we use the express_cat->info() syntax in this file
 // (instead of express_cat.info()), because much of this work is done at
 // static init time, and we must use the arrow syntax to force
@@ -402,7 +406,11 @@ INLINE WantType *
 _dcast(WantType *, TypedObject *ptr) {
 #ifndef NDEBUG
   TypeHandle want_handle = _dcast_get_typehandle((WantType *)0);
+ #if defined(_DEBUG) && defined(_WIN32)
+  if ((ptr == (TypedObject *)NULL) || IsBadWritePtr(ptr,sizeof(TypedObject))) { 
+ #else
   if (ptr == (TypedObject *)NULL) {
+ #endif
     express_cat->warning()
       << "Attempt to cast NULL pointer to " << want_handle << "\n";
     return (WantType *)NULL;

+ 1513 - 1798
panda/src/wdxdisplay/wdxGraphicsPipe.cxx

@@ -19,54 +19,11 @@ TypeHandle wdxGraphicsPipe::_type_handle;
 
 //wdxGraphicsPipe *global_pipe;
 
-#define MOUSE_ENTERED 0
-#define MOUSE_EXITED 1
-
 wdxGraphicsPipe::wdxGraphicsPipe(const PipeSpecifier& spec)
-  : InteractiveGraphicsPipe(spec)
-{
-	/*
-  WNDCLASS wc;
-  HINSTANCE hinstance = GetModuleHandle(NULL);
-
-  // Clear before filling in window structure!
-  memset(&wc, 0, sizeof(WNDCLASS));
-  wc.style		= CS_HREDRAW | CS_VREDRAW;   //CS_OWNDC;
-  wc.lpfnWndProc	= (WNDPROC)static_window_proc;
-  wc.hInstance		= NULL; //hinstance;
-  wc.hIcon		= LoadIcon(hinstance, IDI_WINLOGO);
-  wc.hCursor		= LoadCursor(hinstance, IDC_CROSS);
-  wc.hbrBackground	= NULL;
-  wc.lpszMenuName	= NULL;
-  wc.lpszClassName	= "wdxDisplay";
-
-#if 0
-  if (dx_full_screen)
-	  {
-	  WNDCLASS wndClass = { CS_HREDRAW | CS_VREDRAW, (WNDPROC)static_window_proc, 0, 0, NULL,
-                          NULL, NULL, (HBRUSH)GetStockObject(WHITE_BRUSH), NULL,
-                          TEXT("Fullscreen Window") };
-
-	  if (!RegisterClass( &wndClass ))  {
-		    wdxdisplay_cat.fatal()
-		      << "wdxGraphicsPipe::construct(): could not register full screen window "
-			  << "class" << endl;
-		    exit(0);
-		  }
-	  }
-  else 
-#endif
-  if (!RegisterClass(&wc)) {
-    wdxdisplay_cat.fatal()
-      << "wdxGraphicsPipe::construct(): could not register window "
-	<< "class" << endl;
-    exit(0);
-  }
-
-*/
-  _width = GetSystemMetrics(SM_CXSCREEN);
-  _height = GetSystemMetrics(SM_CYSCREEN);
-  _shift = false;
+: InteractiveGraphicsPipe(spec) {
+	_width = GetSystemMetrics(SM_CXSCREEN);
+	_height = GetSystemMetrics(SM_CYSCREEN);
+	_shift = false;
 //  global_pipe = this;
 }
 
@@ -78,49 +35,48 @@ wdxGraphicsPipe::wdxGraphicsPipe(const PipeSpecifier& spec)
 ////////////////////////////////////////////////////////////////////
 TypeHandle wdxGraphicsPipe::
 get_window_type() const {
-  return wdxGraphicsWindow::get_class_type();
+	return wdxGraphicsWindow::get_class_type();
 }
 
 GraphicsPipe *wdxGraphicsPipe::
 make_wdxGraphicsPipe(const FactoryParams &params) {
-  GraphicsPipe::PipeSpec *pipe_param;
-  if (!get_param_into(pipe_param, params)) {
-    return new wdxGraphicsPipe(PipeSpecifier());
-  } else {
-    return new wdxGraphicsPipe(pipe_param->get_specifier());
-  }
+	GraphicsPipe::PipeSpec *pipe_param;
+	if(!get_param_into(pipe_param, params)) {
+		return new wdxGraphicsPipe(PipeSpecifier());
+	} else {
+		return new wdxGraphicsPipe(pipe_param->get_specifier());
+	}
 }
 
-
 TypeHandle wdxGraphicsPipe::get_class_type(void) {
-  return _type_handle;
+	return _type_handle;
 }
 
 void wdxGraphicsPipe::init_type(void) {
-  InteractiveGraphicsPipe::init_type();
-  register_type(_type_handle, "wdxGraphicsPipe",
-		InteractiveGraphicsPipe::get_class_type());
+	InteractiveGraphicsPipe::init_type();
+	register_type(_type_handle, "wdxGraphicsPipe",
+				  InteractiveGraphicsPipe::get_class_type());
 }
 
 TypeHandle wdxGraphicsPipe::get_type(void) const {
-  return get_class_type();
+	return get_class_type();
 }
 
 wdxGraphicsPipe::wdxGraphicsPipe(void) {
-  wdxdisplay_cat.error()
-    << "wdxGraphicsPipes should not be created with the default constructor"
-    << endl;
+	wdxdisplay_cat.error()
+	<< "wdxGraphicsPipes should not be created with the default constructor"
+	<< endl;
 }
 
 wdxGraphicsPipe::wdxGraphicsPipe(const wdxGraphicsPipe&) {
-  wdxdisplay_cat.error()
-    << "wdxGraphicsPipes should not be copied" << endl;
+	wdxdisplay_cat.error()
+	<< "wdxGraphicsPipes should not be copied" << endl;
 }
 
 wdxGraphicsPipe& wdxGraphicsPipe::operator=(const wdxGraphicsPipe&) {
-  wdxdisplay_cat.error()
-    << "wdxGraphicsPipes should not be assigned" << endl;
-  return *this;
+	wdxdisplay_cat.error()
+	<< "wdxGraphicsPipes should not be assigned" << endl;
+	return *this;
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -131,1747 +87,1506 @@ wdxGraphicsPipe& wdxGraphicsPipe::operator=(const wdxGraphicsPipe&) {
 ////////////////////////////////////////////////////////////////////
 wdxGraphicsWindow *wdxGraphicsPipe::
 find_window(HWND win) {
-  int num_windows = get_num_windows();
-  for (int w = 0; w < num_windows; w++) {
-    wdxGraphicsWindow *window = DCAST(wdxGraphicsWindow, get_window(w));
-    if (window->_mwindow == win)
-      return window;
-  }
-  return NULL;
-}
-
-/*
-////////////////////////////////////////////////////////////////////
-//     Function: static_window_proc 
-//       Access:
-//  Description:
-////////////////////////////////////////////////////////////////////
-LONG WINAPI wdxGraphicsPipe::
-static_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
-  return global_pipe->window_proc(hwnd, msg, wparam, lparam);
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: window_proc 
-//       Access:
-//  Description:
-////////////////////////////////////////////////////////////////////
-LONG wdxGraphicsPipe::
-window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
-  PAINTSTRUCT ps;
-  wdxGraphicsWindow *window;
-  int button = -1;
-  int x, y, width, height;
-
-  switch (msg) {
-	case WM_CREATE:
-	  return 0;
-
-    case WM_CLOSE:
-	  DestroyWindow(hwnd);
-	  return 0;
-
-    case WM_DESTROY:
-     // window = find_window(hwnd);
-     // if (window) 
-	 //		window->dx_cleanup();
-      PostQuitMessage(0);
-      return 0;
-
-
-    case WM_PAINT:
-      window = find_window(hwnd);
-      if (window) {
-//        BeginPaint(hwnd, &ps);
-		window->show_frame();
-//	    EndPaint(hwnd, &ps);
-		}
-      else DefWindowProc(hwnd, msg, wparam, lparam);
-      return 0;
-
-    case WM_SYSCHAR:
-    case WM_CHAR:
-      return 0;    
-    case WM_SYSKEYDOWN:
-    case WM_KEYDOWN:
-      window = find_window(hwnd);
-      if (window) {
-		POINT point;
-//		window->make_current();
-		GetCursorPos(&point);
-		ScreenToClient(hwnd, &point);
-		window->handle_keypress(lookup_key(wparam), point.x, point.y);
-		}
-      return 0;
-    case WM_SYSKEYUP:
-    case WM_KEYUP:
-      window = find_window(hwnd);
-      if (window) {
-	 	POINT point;
-//		window->make_current();
-		GetCursorPos(&point);
-		ScreenToClient(hwnd, &point);
-		window->handle_keyrelease(lookup_key(wparam), point.x, point.y);
-	    }
-      return 0;
-
-    case WM_LBUTTONDOWN:
-      button = 0;
-    case WM_MBUTTONDOWN:
-      if (button < 0)
-            button = 1;
-    case WM_RBUTTONDOWN:
-      if (button < 0)
-        	button = 2;
-      SetCapture(hwnd);
-      // Win32 doesn't return the same numbers as X does when the mouse
-      // goes beyond the upper or left side of the window
-      x = LOWORD(lparam);
-      y = HIWORD(lparam);
-      if (x & 1 << 15) x -= (1 << 16);
-      if (y & 1 << 15) y -= (1 << 16);
-      window = find_window(hwnd);
-      if (window) {
-//		window->make_current();
-		window->handle_keypress(MouseButton::button(button), x, y);
-		}
-      return 0;
-
-    case WM_LBUTTONUP:
-      button = 0;
-    case WM_MBUTTONUP:
-      if (button < 0)
-	        button = 1;
-    case WM_RBUTTONUP:
-      if (button < 0)
-			button = 2;
-      ReleaseCapture();
-      window = find_window(hwnd);
-      if (window) {
-		x = LOWORD(lparam);
-     	y = HIWORD(lparam);
-		if (x & 1 << 15) x -= (1 << 16);
-		if (y & 1 << 15) y -= (1 << 16);
-//		window->make_current();
-		window->handle_keyrelease(MouseButton::button(button), x, y);
-		}
-      return 0;
-
-    case WM_MOUSEMOVE:
-      window = find_window(hwnd);
-      if (window) {
-		x = LOWORD(lparam);
-    	y = HIWORD(lparam);
-		if (x & 1 << 15) x -= (1 << 16);
-		if (y & 1 << 15) y -= (1 << 16);
-		if (window->mouse_motion_enabled() 
-		&& wparam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON))
-			{
-//		    window->make_current();
-		    window->handle_mouse_motion(x, y);
-			}
-		else if (window->mouse_passive_motion_enabled() && 
-		((wparam & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON)) == 0))
-			{
-//		  window->make_current();
-		  window->handle_mouse_motion(x, y);
-			}
-		}
-      return 0;
-
-    case WM_MOVE:
-      window = find_window(hwnd);
-      if (window) {
-		window->handle_window_move(LOWORD(lparam), HIWORD(lparam) );
-		}
-      return 0;
-
-    case WM_SIZE:
-      window = find_window(hwnd);
-      if (window) {
-		width = LOWORD(lparam);
-	 	height = HIWORD(lparam);
-		window->handle_reshape(width, height);
-		}
-      return 0;
-
-    case WM_SETCURSOR:
-      // We need to set the cursor every time the mouse moves on Win32!
-      if (LOWORD(lparam) != HTCLIENT)
-			return DefWindowProc(hwnd, msg, wparam, lparam);
-      window = find_window(hwnd);
-      if (window) {
-		SetCursor(LoadCursor(NULL, IDC_CROSS));
-      }
-      return 1;  
-    case WM_SETFOCUS:
-      window = find_window(hwnd);
-      if (window) 
-		{
-		if (window->mouse_entry_enabled()) {
-//	    window->make_current();
-		window->handle_mouse_entry(MOUSE_ENTERED);
-		}
-      }
-      return 0;
-    case WM_KILLFOCUS:
-      window = find_window(hwnd);
-      if (window) 
-		{
-		if (window->mouse_entry_enabled()) {
-//	    window->make_current();
-		window->handle_mouse_entry(MOUSE_EXITED);
-		}
-      }
-      return 0;
-    default:
-      return DefWindowProc(hwnd, msg, wparam, lparam);
-  }
+	int num_windows = get_num_windows();
+	for(int w = 0; w < num_windows; w++) {
+		wdxGraphicsWindow *window = DCAST(wdxGraphicsWindow, get_window(w));
+		if(window->_mwindow == win)
+			return window;
+	}
+	return NULL;
 }
 
-
-////////////////////////////////////////////////////////////////////
-//     Function: lookup_key 
-//       Access:
-//  Description:
-////////////////////////////////////////////////////////////////////
-ButtonHandle
-wdxGraphicsPipe::lookup_key(WPARAM wparam) const {
-  switch (wparam) {
-    case VK_BACK: return KeyboardButton::backspace();
-    case VK_TAB: return KeyboardButton::tab();
-    case VK_ESCAPE: return KeyboardButton::escape();
-    case VK_SPACE: return KeyboardButton::space();
-    case VK_UP: return KeyboardButton::up();
-    case VK_DOWN: return KeyboardButton::down();
-    case VK_LEFT: return KeyboardButton::left();
-    case VK_RIGHT: return KeyboardButton::right();
-    case VK_PRIOR: return KeyboardButton::page_up();
-    case VK_NEXT: return KeyboardButton::page_down();
-    case VK_HOME: return KeyboardButton::home();
-    case VK_END: return KeyboardButton::end();
-    case VK_F1: return KeyboardButton::f1();
-    case VK_F2: return KeyboardButton::f2();
-    case VK_F3: return KeyboardButton::f3();
-    case VK_F4: return KeyboardButton::f4();
-    case VK_F5: return KeyboardButton::f5();
-    case VK_F6: return KeyboardButton::f6();
-    case VK_F7: return KeyboardButton::f7();
-    case VK_F8: return KeyboardButton::f8();
-    case VK_F9: return KeyboardButton::f9();
-    case VK_F10: return KeyboardButton::f10();
-    case VK_F11: return KeyboardButton::f11();
-    case VK_F12: return KeyboardButton::f12();
-    case VK_INSERT: return KeyboardButton::insert();
-    case VK_DELETE: return KeyboardButton::del();
-    default:
-      int key = MapVirtualKey(wparam, 2);
-      if (isascii(key) && key != 0) {
-	if (GetKeyState(VK_SHIFT) >= 0)
-	  key = tolower(key); 
-	return KeyboardButton::ascii_key((uchar)key);
-      }
-      break;
-  }
-  return ButtonHandle::none();
-}
-*/
-
-
 extern char * ConvD3DErrorToString(const HRESULT &error) {
-  switch(error) 
-  {
-  case E_FAIL:
-      return "Unspecified error E_FAIL";
+	switch(error) {
+		case E_FAIL:
+			return "Unspecified error E_FAIL";
 
-  case DD_OK:
-    return "No error.\0";
-  case D3DERR_BADMAJORVERSION      : // (700)
-    return "D3DERR_BADMAJORVERSION";//: // (700)
-  case D3DERR_BADMINORVERSION      : // (701)
-    return "D3DERR_BADMINORVERSION";//: // (701)
-  case D3DERR_INVALID_DEVICE   : // (705)
-    return "D3DERR_INVALID_DEVICE";//: // (705)
-  case D3DERR_INITFAILED       : // (706)
-    return "D3DERR_INITFAILED";//: // (706)
-  case D3DERR_DEVICEAGGREGATED : // (707)
-    return "D3DERR_DEVICEAGGREGATED";//: // (707)
-  case D3DERR_EXECUTE_CREATE_FAILED    : // (710)
-    return "D3DERR_EXECUTE_CREATE_FAILED";//: // (710)
-  case D3DERR_EXECUTE_DESTROY_FAILED   : // (711)
-    return "D3DERR_EXECUTE_DESTROY_FAILED";//: // (711)
-  case D3DERR_EXECUTE_LOCK_FAILED  : // (712)
-    return "D3DERR_EXECUTE_LOCK_FAILED";//: // (712)
-  case D3DERR_EXECUTE_UNLOCK_FAILED    : // (713)
-    return "D3DERR_EXECUTE_UNLOCK_FAILED";//: // (713)
-  case D3DERR_EXECUTE_LOCKED       : // (714)
-    return "D3DERR_EXECUTE_LOCKED";//: // (714)
-  case D3DERR_EXECUTE_NOT_LOCKED   : // (715)
-    return "D3DERR_EXECUTE_NOT_LOCKED";//: // (715)
-  case D3DERR_EXECUTE_FAILED       : // (716)
-    return "D3DERR_EXECUTE_FAILED";//: // (716)
-  case D3DERR_EXECUTE_CLIPPED_FAILED   : // (717)
-    return "D3DERR_EXECUTE_CLIPPED_FAILED";//: // (717)
-  case D3DERR_TEXTURE_NO_SUPPORT   : // (720)
-    return "D3DERR_TEXTURE_NO_SUPPORT";//: // (720)
-  case D3DERR_TEXTURE_CREATE_FAILED    : // (721)
-    return "D3DERR_TEXTURE_CREATE_FAILED";//: // (721)
-  case D3DERR_TEXTURE_DESTROY_FAILED   : // (722)
-    return "D3DERR_TEXTURE_DESTROY_FAILED";//: // (722)
-  case D3DERR_TEXTURE_LOCK_FAILED  : // (723)
-    return "D3DERR_TEXTURE_LOCK_FAILED";//: // (723)
-  case D3DERR_TEXTURE_UNLOCK_FAILED    : // (724)
-    return "D3DERR_TEXTURE_UNLOCK_FAILED";//: // (724)
-  case D3DERR_TEXTURE_LOAD_FAILED  : // (725)
-    return "D3DERR_TEXTURE_LOAD_FAILED";//: // (725)
-  case D3DERR_TEXTURE_SWAP_FAILED  : // (726)
-    return "D3DERR_TEXTURE_SWAP_FAILED";//: // (726)
-  case D3DERR_TEXTURE_LOCKED       : // (727)
-    return "D3DERR_TEXTURE_LOCKED";//: // (727)
-  case D3DERR_TEXTURE_NOT_LOCKED   : // (728)
-    return "D3DERR_TEXTURE_NOT_LOCKED";//: // (728)
-  case D3DERR_TEXTURE_GETSURF_FAILED   : // (729)
-    return "D3DERR_TEXTURE_GETSURF_FAILED";//: // (729)
-  case D3DERR_MATRIX_CREATE_FAILED : // (730)
-    return "D3DERR_MATRIX_CREATE_FAILED";//: // (730)
-  case D3DERR_MATRIX_DESTROY_FAILED    : // (731)
-    return "D3DERR_MATRIX_DESTROY_FAILED";//: // (731)
-  case D3DERR_MATRIX_SETDATA_FAILED    : // (732)
-    return "D3DERR_MATRIX_SETDATA_FAILED";//: // (732)
-  case D3DERR_MATRIX_GETDATA_FAILED    : // (733)
-    return "D3DERR_MATRIX_GETDATA_FAILED";//: // (733)
-  case D3DERR_SETVIEWPORTDATA_FAILED   : // (734)
-    return "D3DERR_SETVIEWPORTDATA_FAILED";//: // (734)
-  case D3DERR_INVALIDCURRENTVIEWPORT   : // (735)
-    return "D3DERR_INVALIDCURRENTVIEWPORT";//: // (735)
-  case D3DERR_INVALIDPRIMITIVETYPE     : // (736)
-    return "D3DERR_INVALIDPRIMITIVETYPE";//: // (736)
-  case D3DERR_INVALIDVERTEXTYPE        : // (737)
-    return "D3DERR_INVALIDVERTEXTYPE";//: // (737)
-  case D3DERR_TEXTURE_BADSIZE          : // (738)
-    return "D3DERR_TEXTURE_BADSIZE";//: // (738)
-  case D3DERR_INVALIDRAMPTEXTURE       : // (739)
-    return "D3DERR_INVALIDRAMPTEXTURE";//: // (739)
-  case D3DERR_MATERIAL_CREATE_FAILED   : // (740)
-    return "D3DERR_MATERIAL_CREATE_FAILED";//: // (740)
-  case D3DERR_MATERIAL_DESTROY_FAILED  : // (741)
-    return "D3DERR_MATERIAL_DESTROY_FAILED";//: // (741)
-  case D3DERR_MATERIAL_SETDATA_FAILED  : // (742)
-    return "D3DERR_MATERIAL_SETDATA_FAILED";//: // (742)
-  case D3DERR_MATERIAL_GETDATA_FAILED  : // (743)
-    return "D3DERR_MATERIAL_GETDATA_FAILED";//: // (743)
-  case D3DERR_INVALIDPALETTE           : // (744)
-    return "D3DERR_INVALIDPALETTE";//: // (744)
-  case D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY : // (745)
-    return "D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY";//: // (745)
-  case D3DERR_ZBUFF_NEEDS_VIDEOMEMORY  : // (746)
-    return "D3DERR_ZBUFF_NEEDS_VIDEOMEMORY";//: // (746)
-  case D3DERR_SURFACENOTINVIDMEM       : // (747)
-    return "D3DERR_SURFACENOTINVIDMEM";//: // (747)
-  case D3DERR_LIGHT_SET_FAILED     : // (750)
-    return "D3DERR_LIGHT_SET_FAILED";//: // (750)
-  case D3DERR_LIGHTHASVIEWPORT     : // (751)
-    return "D3DERR_LIGHTHASVIEWPORT";//: // (751)
-  case D3DERR_LIGHTNOTINTHISVIEWPORT           : // (752)
-    return "D3DERR_LIGHTNOTINTHISVIEWPORT";//: // (752)
-  case D3DERR_SCENE_IN_SCENE       : // (760)
-    return "D3DERR_SCENE_IN_SCENE";//: // (760)
-  case D3DERR_SCENE_NOT_IN_SCENE   : // (761)
-    return "D3DERR_SCENE_NOT_IN_SCENE";//: // (761)
-  case D3DERR_SCENE_BEGIN_FAILED   : // (762)
-    return "D3DERR_SCENE_BEGIN_FAILED";//: // (762)
-  case D3DERR_SCENE_END_FAILED     : // (763)
-    return "D3DERR_SCENE_END_FAILED";//: // (763)
-  case D3DERR_INBEGIN                  : // (770)
-    return "D3DERR_INBEGIN";//: // (770)
-  case D3DERR_NOTINBEGIN               : // (771)
-    return "D3DERR_NOTINBEGIN";//: // (771)
-  case D3DERR_NOVIEWPORTS              : // (772)
-    return "D3DERR_NOVIEWPORTS";//: // (772)
-  case D3DERR_VIEWPORTDATANOTSET       : // (773)
-    return "D3DERR_VIEWPORTDATANOTSET";//: // (773)
-  case D3DERR_VIEWPORTHASNODEVICE      : // (774)
-    return "D3DERR_VIEWPORTHASNODEVICE";//: // (774)
-  case D3DERR_NOCURRENTVIEWPORT        : // (775)
-    return "D3DERR_NOCURRENTVIEWPORT";//: // (775)
-  case D3DERR_INVALIDVERTEXFORMAT              : // (2048)
-    return "D3DERR_INVALIDVERTEXFORMAT";//: // (2048)
-  case D3DERR_COLORKEYATTACHED                 : // (2050)
-    return "D3DERR_COLORKEYATTACHED";//: // (2050)
-  case D3DERR_VERTEXBUFFEROPTIMIZED            : // (2060)
-    return "D3DERR_VERTEXBUFFEROPTIMIZED";//: // (2060)
-  case D3DERR_VBUF_CREATE_FAILED               : // (2061)
-    return "D3DERR_VBUF_CREATE_FAILED";//: // (2061)
-  case D3DERR_VERTEXBUFFERLOCKED               : // (2062)
-    return "D3DERR_VERTEXBUFFERLOCKED";//: // (2062)
-  case D3DERR_ZBUFFER_NOTPRESENT               : // (2070)
-    return "D3DERR_ZBUFFER_NOTPRESENT";//: // (2070)
-  case D3DERR_STENCILBUFFER_NOTPRESENT         : // (2071)
-    return "D3DERR_STENCILBUFFER_NOTPRESENT";//: // (2071)
-  case D3DERR_WRONGTEXTUREFORMAT               : // (2072)
-    return "D3DERR_WRONGTEXTUREFORMAT";//: // (2072)
-  case D3DERR_UNSUPPORTEDCOLOROPERATION        : // (2073)
-    return "D3DERR_UNSUPPORTEDCOLOROPERATION";//: // (2073)
-  case D3DERR_UNSUPPORTEDCOLORARG              : // (2074)
-    return "D3DERR_UNSUPPORTEDCOLORARG";//: // (2074)
-  case D3DERR_UNSUPPORTEDALPHAOPERATION        : // (2075)
-    return "D3DERR_UNSUPPORTEDALPHAOPERATION";//: // (2075)
-  case D3DERR_UNSUPPORTEDALPHAARG              : // (2076)
-    return "D3DERR_UNSUPPORTEDALPHAARG";//: // (2076)
-  case D3DERR_TOOMANYOPERATIONS                : // (2077)
-    return "D3DERR_TOOMANYOPERATIONS";//: // (2077)
-  case D3DERR_CONFLICTINGTEXTUREFILTER         : // (2078)
-    return "D3DERR_CONFLICTINGTEXTUREFILTER";//: // (2078)
-  case D3DERR_UNSUPPORTEDFACTORVALUE           : // (2079)
-    return "D3DERR_UNSUPPORTEDFACTORVALUE";//: // (2079)
-  case D3DERR_CONFLICTINGRENDERSTATE           : // (2081)
-    return "D3DERR_CONFLICTINGRENDERSTATE";//: // (2081)
-  case D3DERR_UNSUPPORTEDTEXTUREFILTER         : // (2082)
-    return "D3DERR_UNSUPPORTEDTEXTUREFILTER";//: // (2082)
-  case D3DERR_TOOMANYPRIMITIVES                : // (2083)
-    return "D3DERR_TOOMANYPRIMITIVES";//: // (2083)
-  case D3DERR_INVALIDMATRIX                    : // (2084)
-    return "D3DERR_INVALIDMATRIX";//: // (2084)
-  case D3DERR_TOOMANYVERTICES                  : // (2085)
-    return "D3DERR_TOOMANYVERTICES";//: // (2085)
-  case D3DERR_CONFLICTINGTEXTUREPALETTE        : // (2086)
-    return "D3DERR_CONFLICTINGTEXTUREPALETTE";//: // (2086)
+		case DD_OK:
+			return "No error.\0";
+		case D3DERR_BADMAJORVERSION      : // (700)
+			return "D3DERR_BADMAJORVERSION";//: // (700)
+		case D3DERR_BADMINORVERSION      : // (701)
+			return "D3DERR_BADMINORVERSION";//: // (701)
+		case D3DERR_INVALID_DEVICE   : // (705)
+			return "D3DERR_INVALID_DEVICE";//: // (705)
+		case D3DERR_INITFAILED       : // (706)
+			return "D3DERR_INITFAILED";//: // (706)
+		case D3DERR_DEVICEAGGREGATED : // (707)
+			return "D3DERR_DEVICEAGGREGATED";//: // (707)
+		case D3DERR_EXECUTE_CREATE_FAILED    : // (710)
+			return "D3DERR_EXECUTE_CREATE_FAILED";//: // (710)
+		case D3DERR_EXECUTE_DESTROY_FAILED   : // (711)
+			return "D3DERR_EXECUTE_DESTROY_FAILED";//: // (711)
+		case D3DERR_EXECUTE_LOCK_FAILED  : // (712)
+			return "D3DERR_EXECUTE_LOCK_FAILED";//: // (712)
+		case D3DERR_EXECUTE_UNLOCK_FAILED    : // (713)
+			return "D3DERR_EXECUTE_UNLOCK_FAILED";//: // (713)
+		case D3DERR_EXECUTE_LOCKED       : // (714)
+			return "D3DERR_EXECUTE_LOCKED";//: // (714)
+		case D3DERR_EXECUTE_NOT_LOCKED   : // (715)
+			return "D3DERR_EXECUTE_NOT_LOCKED";//: // (715)
+		case D3DERR_EXECUTE_FAILED       : // (716)
+			return "D3DERR_EXECUTE_FAILED";//: // (716)
+		case D3DERR_EXECUTE_CLIPPED_FAILED   : // (717)
+			return "D3DERR_EXECUTE_CLIPPED_FAILED";//: // (717)
+		case D3DERR_TEXTURE_NO_SUPPORT   : // (720)
+			return "D3DERR_TEXTURE_NO_SUPPORT";//: // (720)
+		case D3DERR_TEXTURE_CREATE_FAILED    : // (721)
+			return "D3DERR_TEXTURE_CREATE_FAILED";//: // (721)
+		case D3DERR_TEXTURE_DESTROY_FAILED   : // (722)
+			return "D3DERR_TEXTURE_DESTROY_FAILED";//: // (722)
+		case D3DERR_TEXTURE_LOCK_FAILED  : // (723)
+			return "D3DERR_TEXTURE_LOCK_FAILED";//: // (723)
+		case D3DERR_TEXTURE_UNLOCK_FAILED    : // (724)
+			return "D3DERR_TEXTURE_UNLOCK_FAILED";//: // (724)
+		case D3DERR_TEXTURE_LOAD_FAILED  : // (725)
+			return "D3DERR_TEXTURE_LOAD_FAILED";//: // (725)
+		case D3DERR_TEXTURE_SWAP_FAILED  : // (726)
+			return "D3DERR_TEXTURE_SWAP_FAILED";//: // (726)
+		case D3DERR_TEXTURE_LOCKED       : // (727)
+			return "D3DERR_TEXTURE_LOCKED";//: // (727)
+		case D3DERR_TEXTURE_NOT_LOCKED   : // (728)
+			return "D3DERR_TEXTURE_NOT_LOCKED";//: // (728)
+		case D3DERR_TEXTURE_GETSURF_FAILED   : // (729)
+			return "D3DERR_TEXTURE_GETSURF_FAILED";//: // (729)
+		case D3DERR_MATRIX_CREATE_FAILED : // (730)
+			return "D3DERR_MATRIX_CREATE_FAILED";//: // (730)
+		case D3DERR_MATRIX_DESTROY_FAILED    : // (731)
+			return "D3DERR_MATRIX_DESTROY_FAILED";//: // (731)
+		case D3DERR_MATRIX_SETDATA_FAILED    : // (732)
+			return "D3DERR_MATRIX_SETDATA_FAILED";//: // (732)
+		case D3DERR_MATRIX_GETDATA_FAILED    : // (733)
+			return "D3DERR_MATRIX_GETDATA_FAILED";//: // (733)
+		case D3DERR_SETVIEWPORTDATA_FAILED   : // (734)
+			return "D3DERR_SETVIEWPORTDATA_FAILED";//: // (734)
+		case D3DERR_INVALIDCURRENTVIEWPORT   : // (735)
+			return "D3DERR_INVALIDCURRENTVIEWPORT";//: // (735)
+		case D3DERR_INVALIDPRIMITIVETYPE     : // (736)
+			return "D3DERR_INVALIDPRIMITIVETYPE";//: // (736)
+		case D3DERR_INVALIDVERTEXTYPE        : // (737)
+			return "D3DERR_INVALIDVERTEXTYPE";//: // (737)
+		case D3DERR_TEXTURE_BADSIZE          : // (738)
+			return "D3DERR_TEXTURE_BADSIZE";//: // (738)
+		case D3DERR_INVALIDRAMPTEXTURE       : // (739)
+			return "D3DERR_INVALIDRAMPTEXTURE";//: // (739)
+		case D3DERR_MATERIAL_CREATE_FAILED   : // (740)
+			return "D3DERR_MATERIAL_CREATE_FAILED";//: // (740)
+		case D3DERR_MATERIAL_DESTROY_FAILED  : // (741)
+			return "D3DERR_MATERIAL_DESTROY_FAILED";//: // (741)
+		case D3DERR_MATERIAL_SETDATA_FAILED  : // (742)
+			return "D3DERR_MATERIAL_SETDATA_FAILED";//: // (742)
+		case D3DERR_MATERIAL_GETDATA_FAILED  : // (743)
+			return "D3DERR_MATERIAL_GETDATA_FAILED";//: // (743)
+		case D3DERR_INVALIDPALETTE           : // (744)
+			return "D3DERR_INVALIDPALETTE";//: // (744)
+		case D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY : // (745)
+			return "D3DERR_ZBUFF_NEEDS_SYSTEMMEMORY";//: // (745)
+		case D3DERR_ZBUFF_NEEDS_VIDEOMEMORY  : // (746)
+			return "D3DERR_ZBUFF_NEEDS_VIDEOMEMORY";//: // (746)
+		case D3DERR_SURFACENOTINVIDMEM       : // (747)
+			return "D3DERR_SURFACENOTINVIDMEM";//: // (747)
+		case D3DERR_LIGHT_SET_FAILED     : // (750)
+			return "D3DERR_LIGHT_SET_FAILED";//: // (750)
+		case D3DERR_LIGHTHASVIEWPORT     : // (751)
+			return "D3DERR_LIGHTHASVIEWPORT";//: // (751)
+		case D3DERR_LIGHTNOTINTHISVIEWPORT           : // (752)
+			return "D3DERR_LIGHTNOTINTHISVIEWPORT";//: // (752)
+		case D3DERR_SCENE_IN_SCENE       : // (760)
+			return "D3DERR_SCENE_IN_SCENE";//: // (760)
+		case D3DERR_SCENE_NOT_IN_SCENE   : // (761)
+			return "D3DERR_SCENE_NOT_IN_SCENE";//: // (761)
+		case D3DERR_SCENE_BEGIN_FAILED   : // (762)
+			return "D3DERR_SCENE_BEGIN_FAILED";//: // (762)
+		case D3DERR_SCENE_END_FAILED     : // (763)
+			return "D3DERR_SCENE_END_FAILED";//: // (763)
+		case D3DERR_INBEGIN                  : // (770)
+			return "D3DERR_INBEGIN";//: // (770)
+		case D3DERR_NOTINBEGIN               : // (771)
+			return "D3DERR_NOTINBEGIN";//: // (771)
+		case D3DERR_NOVIEWPORTS              : // (772)
+			return "D3DERR_NOVIEWPORTS";//: // (772)
+		case D3DERR_VIEWPORTDATANOTSET       : // (773)
+			return "D3DERR_VIEWPORTDATANOTSET";//: // (773)
+		case D3DERR_VIEWPORTHASNODEVICE      : // (774)
+			return "D3DERR_VIEWPORTHASNODEVICE";//: // (774)
+		case D3DERR_NOCURRENTVIEWPORT        : // (775)
+			return "D3DERR_NOCURRENTVIEWPORT";//: // (775)
+		case D3DERR_INVALIDVERTEXFORMAT              : // (2048)
+			return "D3DERR_INVALIDVERTEXFORMAT";//: // (2048)
+		case D3DERR_COLORKEYATTACHED                 : // (2050)
+			return "D3DERR_COLORKEYATTACHED";//: // (2050)
+		case D3DERR_VERTEXBUFFEROPTIMIZED            : // (2060)
+			return "D3DERR_VERTEXBUFFEROPTIMIZED";//: // (2060)
+		case D3DERR_VBUF_CREATE_FAILED               : // (2061)
+			return "D3DERR_VBUF_CREATE_FAILED";//: // (2061)
+		case D3DERR_VERTEXBUFFERLOCKED               : // (2062)
+			return "D3DERR_VERTEXBUFFERLOCKED";//: // (2062)
+		case D3DERR_ZBUFFER_NOTPRESENT               : // (2070)
+			return "D3DERR_ZBUFFER_NOTPRESENT";//: // (2070)
+		case D3DERR_STENCILBUFFER_NOTPRESENT         : // (2071)
+			return "D3DERR_STENCILBUFFER_NOTPRESENT";//: // (2071)
+		case D3DERR_WRONGTEXTUREFORMAT               : // (2072)
+			return "D3DERR_WRONGTEXTUREFORMAT";//: // (2072)
+		case D3DERR_UNSUPPORTEDCOLOROPERATION        : // (2073)
+			return "D3DERR_UNSUPPORTEDCOLOROPERATION";//: // (2073)
+		case D3DERR_UNSUPPORTEDCOLORARG              : // (2074)
+			return "D3DERR_UNSUPPORTEDCOLORARG";//: // (2074)
+		case D3DERR_UNSUPPORTEDALPHAOPERATION        : // (2075)
+			return "D3DERR_UNSUPPORTEDALPHAOPERATION";//: // (2075)
+		case D3DERR_UNSUPPORTEDALPHAARG              : // (2076)
+			return "D3DERR_UNSUPPORTEDALPHAARG";//: // (2076)
+		case D3DERR_TOOMANYOPERATIONS                : // (2077)
+			return "D3DERR_TOOMANYOPERATIONS";//: // (2077)
+		case D3DERR_CONFLICTINGTEXTUREFILTER         : // (2078)
+			return "D3DERR_CONFLICTINGTEXTUREFILTER";//: // (2078)
+		case D3DERR_UNSUPPORTEDFACTORVALUE           : // (2079)
+			return "D3DERR_UNSUPPORTEDFACTORVALUE";//: // (2079)
+		case D3DERR_CONFLICTINGRENDERSTATE           : // (2081)
+			return "D3DERR_CONFLICTINGRENDERSTATE";//: // (2081)
+		case D3DERR_UNSUPPORTEDTEXTUREFILTER         : // (2082)
+			return "D3DERR_UNSUPPORTEDTEXTUREFILTER";//: // (2082)
+		case D3DERR_TOOMANYPRIMITIVES                : // (2083)
+			return "D3DERR_TOOMANYPRIMITIVES";//: // (2083)
+		case D3DERR_INVALIDMATRIX                    : // (2084)
+			return "D3DERR_INVALIDMATRIX";//: // (2084)
+		case D3DERR_TOOMANYVERTICES                  : // (2085)
+			return "D3DERR_TOOMANYVERTICES";//: // (2085)
+		case D3DERR_CONFLICTINGTEXTUREPALETTE        : // (2086)
+			return "D3DERR_CONFLICTINGTEXTUREPALETTE";//: // (2086)
 //#if DX7
-  case D3DERR_VERTEXBUFFERUNLOCKFAILED         : // (2063)
-    return "D3DERR_VERTEXBUFFERUNLOCKFAILED";//: // (2063)
-  case D3DERR_INVALIDSTATEBLOCK        : // (2100)
-    return "D3DERR_INVALIDSTATEBLOCK";//: // (2100)
-  case D3DERR_INBEGINSTATEBLOCK        : // (2101)
-    return "D3DERR_INBEGINSTATEBLOCK";//: // (2101)
-  case D3DERR_NOTINBEGINSTATEBLOCK     : // (2102)
-    return "D3DERR_NOTINBEGINSTATEBLOCK";//: // (2102)
+		case D3DERR_VERTEXBUFFERUNLOCKFAILED         : // (2063)
+			return "D3DERR_VERTEXBUFFERUNLOCKFAILED";//: // (2063)
+		case D3DERR_INVALIDSTATEBLOCK        : // (2100)
+			return "D3DERR_INVALIDSTATEBLOCK";//: // (2100)
+		case D3DERR_INBEGINSTATEBLOCK        : // (2101)
+			return "D3DERR_INBEGINSTATEBLOCK";//: // (2101)
+		case D3DERR_NOTINBEGINSTATEBLOCK     : // (2102)
+			return "D3DERR_NOTINBEGINSTATEBLOCK";//: // (2102)
   //case D3DERR_INOVERLAYSTATEBLOCK      : // (2103)
   //  return "D3DERR_INOVERLAYSTATEBLOCK";//: // (2103)
-  case DDERR_NOSTEREOHARDWARE    	: // ( 181 )
-    return "DDERR_NOSTEREOHARDWARE    	";//: // ( 181 )
-  case DDERR_NOSURFACELEFT				: // ( 182 )
-    return "DDERR_NOSURFACELEFT				";//: // ( 182 )
-  case DDERR_DDSCAPSCOMPLEXREQUIRED            : // ( 542 )
-    return "DDERR_DDSCAPSCOMPLEXREQUIRED";//: // ( 542 )
-  case DDERR_NOTONMIPMAPSUBLEVEL               : // ( 603 )
-    return "DDERR_NOTONMIPMAPSUBLEVEL";//: // ( 603 )
-  case DDERR_TESTFINISHED                      : // ( 692 )
-    return "DDERR_TESTFINISHED";//: // ( 692 )
-  case DDERR_NEWMODE                           : // ( 693 )
-    return "DDERR_NEWMODE";//: // ( 693 )
+		case DDERR_NOSTEREOHARDWARE       :	// ( 181 )
+			return "DDERR_NOSTEREOHARDWARE    	";//: // ( 181 )
+		case DDERR_NOSURFACELEFT              :	// ( 182 )
+			return "DDERR_NOSURFACELEFT				";//: // ( 182 )
+		case DDERR_DDSCAPSCOMPLEXREQUIRED            : // ( 542 )
+			return "DDERR_DDSCAPSCOMPLEXREQUIRED";//: // ( 542 )
+		case DDERR_NOTONMIPMAPSUBLEVEL               : // ( 603 )
+			return "DDERR_NOTONMIPMAPSUBLEVEL";//: // ( 603 )
+		case DDERR_TESTFINISHED                      : // ( 692 )
+			return "DDERR_TESTFINISHED";//: // ( 692 )
+		case DDERR_NEWMODE                           : // ( 693 )
+			return "DDERR_NEWMODE";//: // ( 693 )
 //#endif
-    //case D3DERR_COMMAND_UNPARSED              : // (3000)
-    /// return "case";//D3DERR_COMMAND_UNPARSED              : // (3000)
- 
-  case DDERR_ALREADYINITIALIZED		: // ( 5 )
-    return "DDERR_ALREADYINITIALIZED		";//: // ( 5 )
-  case DDERR_CANNOTATTACHSURFACE		: // ( 10 )
-    return "DDERR_CANNOTATTACHSURFACE		";//: // ( 10 )
-  case DDERR_CANNOTDETACHSURFACE		: // ( 20 )
-    return "DDERR_CANNOTDETACHSURFACE		";//: // ( 20 )
-  case DDERR_CURRENTLYNOTAVAIL			: // ( 40 )
-    return "DDERR_CURRENTLYNOTAVAIL			";//: // ( 40 )
-  case DDERR_EXCEPTION				: // ( 55 )
-    return "DDERR_EXCEPTION				";//: // ( 55 )
-  case DDERR_HEIGHTALIGN			: // ( 90 )
-    return "DDERR_HEIGHTALIGN			";//: // ( 90 )
-  case DDERR_INCOMPATIBLEPRIMARY		: // ( 95 )
-    return "DDERR_INCOMPATIBLEPRIMARY		";//: // ( 95 )
-  case DDERR_INVALIDCAPS			: // ( 100 )
-    return "DDERR_INVALIDCAPS			";//: // ( 100 )
-  case DDERR_INVALIDCLIPLIST			: // ( 110 )
-    return "DDERR_INVALIDCLIPLIST			";//: // ( 110 )
-  case DDERR_INVALIDMODE			: // ( 120 )
-    return "DDERR_INVALIDMODE			";//: // ( 120 )
-  case DDERR_INVALIDOBJECT			: // ( 130 )
-    return "DDERR_INVALIDOBJECT			";//: // ( 130 )
-  case DDERR_INVALIDPIXELFORMAT		: // ( 145 )
-    return "DDERR_INVALIDPIXELFORMAT		";//: // ( 145 )
-  case DDERR_INVALIDRECT			: // ( 150 )
-    return "DDERR_INVALIDRECT			";//: // ( 150 )
-  case DDERR_LOCKEDSURFACES			: // ( 160 )
-    return "DDERR_LOCKEDSURFACES			";//: // ( 160 )
-  case DDERR_NO3D				: // ( 170 )
-    return "DDERR_NO3D				";//: // ( 170 )
-  case DDERR_NOALPHAHW				: // ( 180 )
-    return "DDERR_NOALPHAHW				";//: // ( 180 )
-  case DDERR_NOCLIPLIST			: // ( 205 )
-    return "DDERR_NOCLIPLIST			";//: // ( 205 )
-  case DDERR_NOCOLORCONVHW			: // ( 210 )
-    return "DDERR_NOCOLORCONVHW			";//: // ( 210 )
-  case DDERR_NOCOOPERATIVELEVELSET		: // ( 212 )
-    return "DDERR_NOCOOPERATIVELEVELSET		";//: // ( 212 )
-  case DDERR_NOCOLORKEY			: // ( 215 )
-    return "DDERR_NOCOLORKEY			";//: // ( 215 )
-  case DDERR_NOCOLORKEYHW			: // ( 220 )
-    return "DDERR_NOCOLORKEYHW			";//: // ( 220 )
-  case DDERR_NODIRECTDRAWSUPPORT		: // ( 222 )
-    return "DDERR_NODIRECTDRAWSUPPORT		";//: // ( 222 )
-  case DDERR_NOEXCLUSIVEMODE			: // ( 225 )
-    return "DDERR_NOEXCLUSIVEMODE			";//: // ( 225 )
-  case DDERR_NOFLIPHW				: // ( 230 )
-    return "DDERR_NOFLIPHW				";//: // ( 230 )
-  case DDERR_NOGDI				: // ( 240 )
-    return "DDERR_NOGDI				";//: // ( 240 )
-  case DDERR_NOMIRRORHW			: // ( 250 )
-    return "DDERR_NOMIRRORHW			";//: // ( 250 )
-  case DDERR_NOTFOUND				: // ( 255 )
-    return "DDERR_NOTFOUND				";//: // ( 255 )
-  case DDERR_NOOVERLAYHW			: // ( 260 )
-    return "DDERR_NOOVERLAYHW			";//: // ( 260 )
-  case DDERR_OVERLAPPINGRECTS			: // ( 270 )
-    return "DDERR_OVERLAPPINGRECTS			";//: // ( 270 )
-  case DDERR_NORASTEROPHW			: // ( 280 )
-    return "DDERR_NORASTEROPHW			";//: // ( 280 )
-  case DDERR_NOROTATIONHW			: // ( 290 )
-    return "DDERR_NOROTATIONHW			";//: // ( 290 )
-  case DDERR_NOSTRETCHHW			: // ( 310 )
-    return "DDERR_NOSTRETCHHW			";//: // ( 310 )
-  case DDERR_NOT4BITCOLOR			: // ( 316 )
-    return "DDERR_NOT4BITCOLOR			";//: // ( 316 )
-  case DDERR_NOT4BITCOLORINDEX			: // ( 317 )
-    return "DDERR_NOT4BITCOLORINDEX			";//: // ( 317 )
-  case DDERR_NOT8BITCOLOR			: // ( 320 )
-    return "DDERR_NOT8BITCOLOR			";//: // ( 320 )
-  case DDERR_NOTEXTUREHW			: // ( 330 )
-    return "DDERR_NOTEXTUREHW			";//: // ( 330 )
-  case DDERR_NOVSYNCHW				: // ( 335 )
-    return "DDERR_NOVSYNCHW				";//: // ( 335 )
-  case DDERR_NOZBUFFERHW			: // ( 340 )
-    return "DDERR_NOZBUFFERHW			";//: // ( 340 )
-  case DDERR_NOZOVERLAYHW			: // ( 350 )
-    return "DDERR_NOZOVERLAYHW			";//: // ( 350 )
-  case DDERR_OUTOFCAPS				: // ( 360 )
-    return "DDERR_OUTOFCAPS				";//: // ( 360 )
-  case DDERR_OUTOFVIDEOMEMORY			: // ( 380 )
-    return "DDERR_OUTOFVIDEOMEMORY			";//: // ( 380 )
-  case DDERR_OVERLAYCANTCLIP			: // ( 382 )
-    return "DDERR_OVERLAYCANTCLIP			";//: // ( 382 )
-  case DDERR_OVERLAYCOLORKEYONLYONEACTIVE	: // ( 384 )
-    return "DDERR_OVERLAYCOLORKEYONLYONEACTIVE	";//: // ( 384 )
-  case DDERR_PALETTEBUSY			: // ( 387 )
-    return "DDERR_PALETTEBUSY			";//: // ( 387 )
-  case DDERR_COLORKEYNOTSET			: // ( 400 )
-    return "DDERR_COLORKEYNOTSET			";//: // ( 400 )
-  case DDERR_SURFACEALREADYATTACHED		: // ( 410 )
-    return "DDERR_SURFACEALREADYATTACHED		";//: // ( 410 )
-  case DDERR_SURFACEALREADYDEPENDENT		: // ( 420 )
-    return "DDERR_SURFACEALREADYDEPENDENT		";//: // ( 420 )
-  case DDERR_SURFACEBUSY			: // ( 430 )
-    return "DDERR_SURFACEBUSY			";//: // ( 430 )
-  case DDERR_CANTLOCKSURFACE                   : // ( 435 )
-    return "DDERR_CANTLOCKSURFACE";//: // ( 435 )
-  case DDERR_SURFACEISOBSCURED			: // ( 440 )
-    return "DDERR_SURFACEISOBSCURED			";//: // ( 440 )
-  case DDERR_SURFACELOST			: // ( 450 )
-    return "DDERR_SURFACELOST			";//: // ( 450 )
-  case DDERR_SURFACENOTATTACHED		: // ( 460 )
-    return "DDERR_SURFACENOTATTACHED		";//: // ( 460 )
-  case DDERR_TOOBIGHEIGHT			: // ( 470 )
-    return "DDERR_TOOBIGHEIGHT			";//: // ( 470 )
-  case DDERR_TOOBIGSIZE			: // ( 480 )
-    return "DDERR_TOOBIGSIZE			";//: // ( 480 )
-  case DDERR_TOOBIGWIDTH			: // ( 490 )
-    return "DDERR_TOOBIGWIDTH			";//: // ( 490 )
-  case DDERR_UNSUPPORTEDFORMAT			: // ( 510 )
-    return "DDERR_UNSUPPORTEDFORMAT			";//: // ( 510 )
-  case DDERR_UNSUPPORTEDMASK			: // ( 520 )
-    return "DDERR_UNSUPPORTEDMASK			";//: // ( 520 )
-  case DDERR_INVALIDSTREAM                     : // ( 521 )
-    return "DDERR_INVALIDSTREAM";//: // ( 521 )
-  case DDERR_VERTICALBLANKINPROGRESS		: // ( 537 )
-    return "DDERR_VERTICALBLANKINPROGRESS		";//: // ( 537 )
-  case DDERR_WASSTILLDRAWING			: // ( 540 )
-    return "DDERR_WASSTILLDRAWING			";//: // ( 540 )
-  case DDERR_XALIGN				: // ( 560 )
-    return "DDERR_XALIGN				";//: // ( 560 )
-  case DDERR_INVALIDDIRECTDRAWGUID		: // ( 561 )
-    return "DDERR_INVALIDDIRECTDRAWGUID		";//: // ( 561 )
-  case DDERR_DIRECTDRAWALREADYCREATED		: // ( 562 )
-    return "DDERR_DIRECTDRAWALREADYCREATED		";//: // ( 562 )
-  case DDERR_NODIRECTDRAWHW			: // ( 563 )
-    return "DDERR_NODIRECTDRAWHW			";//: // ( 563 )
-  case DDERR_PRIMARYSURFACEALREADYEXISTS	: // ( 564 )
-    return "DDERR_PRIMARYSURFACEALREADYEXISTS	";//: // ( 564 )
-  case DDERR_NOEMULATION			: // ( 565 )
-    return "DDERR_NOEMULATION			";//: // ( 565 )
-  case DDERR_REGIONTOOSMALL			: // ( 566 )
-    return "DDERR_REGIONTOOSMALL			";//: // ( 566 )
-  case DDERR_CLIPPERISUSINGHWND		: // ( 567 )
-    return "DDERR_CLIPPERISUSINGHWND		";//: // ( 567 )
-  case DDERR_NOCLIPPERATTACHED			: // ( 568 )
-    return "DDERR_NOCLIPPERATTACHED			";//: // ( 568 )
-  case DDERR_NOHWND				: // ( 569 )
-    return "DDERR_NOHWND				";//: // ( 569 )
-  case DDERR_HWNDSUBCLASSED			: // ( 570 )
-    return "DDERR_HWNDSUBCLASSED			";//: // ( 570 )
-  case DDERR_HWNDALREADYSET			: // ( 571 )
-    return "DDERR_HWNDALREADYSET			";//: // ( 571 )
-  case DDERR_NOPALETTEATTACHED			: // ( 572 )
-    return "DDERR_NOPALETTEATTACHED			";//: // ( 572 )
-  case DDERR_NOPALETTEHW			: // ( 573 )
-    return "DDERR_NOPALETTEHW			";//: // ( 573 )
-  case DDERR_BLTFASTCANTCLIP			: // ( 574 )
-    return "DDERR_BLTFASTCANTCLIP			";//: // ( 574 )
-  case DDERR_NOBLTHW				: // ( 575 )
-    return "DDERR_NOBLTHW				";//: // ( 575 )
-  case DDERR_NODDROPSHW			: // ( 576 )
-    return "DDERR_NODDROPSHW			";//: // ( 576 )
-  case DDERR_OVERLAYNOTVISIBLE			: // ( 577 )
-    return "DDERR_OVERLAYNOTVISIBLE			";//: // ( 577 )
-  case DDERR_NOOVERLAYDEST			: // ( 578 )
-    return "DDERR_NOOVERLAYDEST			";//: // ( 578 )
-  case DDERR_INVALIDPOSITION			: // ( 579 )
-    return "DDERR_INVALIDPOSITION			";//: // ( 579 )
-  case DDERR_NOTAOVERLAYSURFACE		: // ( 580 )
-    return "DDERR_NOTAOVERLAYSURFACE		";//: // ( 580 )
-  case DDERR_EXCLUSIVEMODEALREADYSET		: // ( 581 )
-    return "DDERR_EXCLUSIVEMODEALREADYSET		";//: // ( 581 )
-  case DDERR_NOTFLIPPABLE			: // ( 582 )
-    return "DDERR_NOTFLIPPABLE			";//: // ( 582 )
-  case DDERR_CANTDUPLICATE			: // ( 583 )
-    return "DDERR_CANTDUPLICATE			";//: // ( 583 )
-  case DDERR_NOTLOCKED				: // ( 584 )
-    return "DDERR_NOTLOCKED				";//: // ( 584 )
-  case DDERR_CANTCREATEDC			: // ( 585 )
-    return "DDERR_CANTCREATEDC			";//: // ( 585 )
-  case DDERR_NODC				: // ( 586 )
-    return "DDERR_NODC				";//: // ( 586 )
-  case DDERR_WRONGMODE				: // ( 587 )
-    return "DDERR_WRONGMODE				";//: // ( 587 )
-  case DDERR_IMPLICITLYCREATED			: // ( 588 )
-    return "DDERR_IMPLICITLYCREATED			";//: // ( 588 )
-  case DDERR_NOTPALETTIZED			: // ( 589 )
-    return "DDERR_NOTPALETTIZED			";//: // ( 589 )
-  case DDERR_UNSUPPORTEDMODE			: // ( 590 )
-    return "DDERR_UNSUPPORTEDMODE			";//: // ( 590 )
-  case DDERR_NOMIPMAPHW			: // ( 591 )
-    return "DDERR_NOMIPMAPHW			";//: // ( 591 )
-  case DDERR_INVALIDSURFACETYPE                : // ( 592 )
-    return "DDERR_INVALIDSURFACETYPE";//: // ( 592 )
-  case DDERR_NOOPTIMIZEHW                      : // ( 600 )
-    return "DDERR_NOOPTIMIZEHW";//: // ( 600 )
-  case DDERR_NOTLOADED                         : // ( 601 )
-    return "DDERR_NOTLOADED";//: // ( 601 )
-  case DDERR_NOFOCUSWINDOW                     : // ( 602 )
-    return "DDERR_NOFOCUSWINDOW";//: // ( 602 )
-  case DDERR_DCALREADYCREATED			: // ( 620 )
-    return "DDERR_DCALREADYCREATED			";//: // ( 620 )
-  case DDERR_NONONLOCALVIDMEM                  : // ( 630 )
-    return "DDERR_NONONLOCALVIDMEM";//: // ( 630 )
-  case DDERR_CANTPAGELOCK			: // ( 640 )
-    return "DDERR_CANTPAGELOCK			";//: // ( 640 )
-  case DDERR_CANTPAGEUNLOCK			: // ( 660 )
-    return "DDERR_CANTPAGEUNLOCK			";//: // ( 660 )
-  case DDERR_NOTPAGELOCKED			: // ( 680 )
-    return "DDERR_NOTPAGELOCKED			";//: // ( 680 )
-  case DDERR_MOREDATA         			: // ( 690 )
-    return "DDERR_MOREDATA         			";//: // ( 690 )
-  case DDERR_EXPIRED                           : // ( 691 )
-    return "DDERR_EXPIRED";//: // ( 691 )
-  case DDERR_VIDEONOTACTIVE   			: // ( 695 )
-    return "DDERR_VIDEONOTACTIVE   			";//: // ( 695 )
-  case DDERR_DEVICEDOESNTOWNSURFACE   		: // ( 699 )
-    return "DDERR_DEVICEDOESNTOWNSURFACE   		";//: // ( 699 )
-  case DXFILEERR_BADOBJECT                 : // (850)
-    return "DXFILEERR_BADOBJECT";//: // (850)
-  case DXFILEERR_BADVALUE                  : // (851)
-    return "DXFILEERR_BADVALUE";//: // (851)
-  case DXFILEERR_BADTYPE                   : // (852)
-    return "DXFILEERR_BADTYPE";//: // (852)
-  case DXFILEERR_BADSTREAMHANDLE           : // (853)
-    return "DXFILEERR_BADSTREAMHANDLE";//: // (853)
-  case DXFILEERR_BADALLOC                  : // (854)
-    return "DXFILEERR_BADALLOC";//: // (854)
-  case DXFILEERR_NOTFOUND                  : // (855)
-    return "DXFILEERR_NOTFOUND";//: // (855)
-  case DXFILEERR_NOTDONEYET                : // (856)
-    return "DXFILEERR_NOTDONEYET";//: // (856)
-  case DXFILEERR_FILENOTFOUND              : // (857)
-    return "DXFILEERR_FILENOTFOUND";//: // (857)
-  case DXFILEERR_RESOURCENOTFOUND          : // (858)
-    return "DXFILEERR_RESOURCENOTFOUND";//: // (858)
-  case DXFILEERR_URLNOTFOUND               : // (859)
-    return "DXFILEERR_URLNOTFOUND";//: // (859)
-  case DXFILEERR_BADRESOURCE               : // (860)
-    return "DXFILEERR_BADRESOURCE";//: // (860)
-  case DXFILEERR_BADFILETYPE               : // (861)
-    return "DXFILEERR_BADFILETYPE";//: // (861)
-  case DXFILEERR_BADFILEVERSION            : // (862)
-    return "DXFILEERR_BADFILEVERSION";//: // (862)
-  case DXFILEERR_BADFILEFLOATSIZE          : // (863)
-    return "DXFILEERR_BADFILEFLOATSIZE";//: // (863)
-  case DXFILEERR_BADFILECOMPRESSIONTYPE    : // (864)
-    return "DXFILEERR_BADFILECOMPRESSIONTYPE";//: // (864)
-  case DXFILEERR_BADFILE                   : // (865)
-    return "DXFILEERR_BADFILE";//: // (865)
-  case DXFILEERR_PARSEERROR                : // (866)
-    return "DXFILEERR_PARSEERROR";//: // (866)
-  case DXFILEERR_NOTEMPLATE                : // (867)
-    return "DXFILEERR_NOTEMPLATE";//: // (867)
-  case DXFILEERR_BADARRAYSIZE              : // (868)
-    return "DXFILEERR_BADARRAYSIZE";//: // (868)
-  case DXFILEERR_BADDATAREFERENCE          : // (869)
-    return "DXFILEERR_BADDATAREFERENCE";//: // (869)
-  case DXFILEERR_INTERNALERROR             : // (870)
-    return "DXFILEERR_INTERNALERROR";//: // (870)
-  case DXFILEERR_NOMOREOBJECTS             : // (871)
-    return "DXFILEERR_NOMOREOBJECTS";//: // (871)
-  case DXFILEERR_BADINTRINSICS             : // (872)
-    return "DXFILEERR_BADINTRINSICS";//: // (872)
-  case DXFILEERR_NOMORESTREAMHANDLES       : // (873)
-    return "DXFILEERR_NOMORESTREAMHANDLES";//: // (873)
-  case DXFILEERR_NOMOREDATA                : // (874)
-    return "DXFILEERR_NOMOREDATA";//: // (874)
-  case DXFILEERR_BADCACHEFILE              : // (875)
-    return "DXFILEERR_BADCACHEFILE";//: // (875)
-  case DXFILEERR_NOINTERNET                : // (876)
-    return "DXFILEERR_NOINTERNET";//: // (876)
-  
-    case E_UNEXPECTED                     :
-    return "E_UNEXPECTED                     ";
-    case E_NOTIMPL                        :
-    return "E_NOTIMPL                        ";
-    case E_OUTOFMEMORY                    :
-    return "E_OUTOFMEMORY                    ";
-    case E_INVALIDARG                     :
-    return "E_INVALIDARG or DDERR_INVALIDPARAMS";
-    case E_NOINTERFACE                    :
-    return "E_NOINTERFACE                    ";
-    case E_POINTER                        :
-    return "E_POINTER                        ";
-    case E_HANDLE                         :
-    return "E_HANDLE                         ";
-    case E_ABORT                          :
-    return "E_ABORT                          ";
+	//case D3DERR_COMMAND_UNPARSED              : // (3000)
+	/// return "case";//D3DERR_COMMAND_UNPARSED              : // (3000)
+
+		case DDERR_ALREADYINITIALIZED     :	// ( 5 )
+			return "DDERR_ALREADYINITIALIZED		";//: // ( 5 )
+		case DDERR_CANNOTATTACHSURFACE        :	// ( 10 )
+			return "DDERR_CANNOTATTACHSURFACE		";//: // ( 10 )
+		case DDERR_CANNOTDETACHSURFACE        :	// ( 20 )
+			return "DDERR_CANNOTDETACHSURFACE		";//: // ( 20 )
+		case DDERR_CURRENTLYNOTAVAIL          :	// ( 40 )
+			return "DDERR_CURRENTLYNOTAVAIL			";//: // ( 40 )
+		case DDERR_EXCEPTION              :	// ( 55 )
+			return "DDERR_EXCEPTION				";//: // ( 55 )
+		case DDERR_HEIGHTALIGN            :	// ( 90 )
+			return "DDERR_HEIGHTALIGN			";//: // ( 90 )
+		case DDERR_INCOMPATIBLEPRIMARY        :	// ( 95 )
+			return "DDERR_INCOMPATIBLEPRIMARY		";//: // ( 95 )
+		case DDERR_INVALIDCAPS            :	// ( 100 )
+			return "DDERR_INVALIDCAPS			";//: // ( 100 )
+		case DDERR_INVALIDCLIPLIST            :	// ( 110 )
+			return "DDERR_INVALIDCLIPLIST			";//: // ( 110 )
+		case DDERR_INVALIDMODE            :	// ( 120 )
+			return "DDERR_INVALIDMODE			";//: // ( 120 )
+		case DDERR_INVALIDOBJECT          :	// ( 130 )
+			return "DDERR_INVALIDOBJECT			";//: // ( 130 )
+		case DDERR_INVALIDPIXELFORMAT     :	// ( 145 )
+			return "DDERR_INVALIDPIXELFORMAT		";//: // ( 145 )
+		case DDERR_INVALIDRECT            :	// ( 150 )
+			return "DDERR_INVALIDRECT			";//: // ( 150 )
+		case DDERR_LOCKEDSURFACES         :	// ( 160 )
+			return "DDERR_LOCKEDSURFACES			";//: // ( 160 )
+		case DDERR_NO3D               :	// ( 170 )
+			return "DDERR_NO3D				";//: // ( 170 )
+		case DDERR_NOALPHAHW              :	// ( 180 )
+			return "DDERR_NOALPHAHW				";//: // ( 180 )
+		case DDERR_NOCLIPLIST         :	// ( 205 )
+			return "DDERR_NOCLIPLIST			";//: // ( 205 )
+		case DDERR_NOCOLORCONVHW          :	// ( 210 )
+			return "DDERR_NOCOLORCONVHW			";//: // ( 210 )
+		case DDERR_NOCOOPERATIVELEVELSET      :	// ( 212 )
+			return "DDERR_NOCOOPERATIVELEVELSET		";//: // ( 212 )
+		case DDERR_NOCOLORKEY         :	// ( 215 )
+			return "DDERR_NOCOLORKEY			";//: // ( 215 )
+		case DDERR_NOCOLORKEYHW           :	// ( 220 )
+			return "DDERR_NOCOLORKEYHW			";//: // ( 220 )
+		case DDERR_NODIRECTDRAWSUPPORT        :	// ( 222 )
+			return "DDERR_NODIRECTDRAWSUPPORT		";//: // ( 222 )
+		case DDERR_NOEXCLUSIVEMODE            :	// ( 225 )
+			return "DDERR_NOEXCLUSIVEMODE			";//: // ( 225 )
+		case DDERR_NOFLIPHW               :	// ( 230 )
+			return "DDERR_NOFLIPHW				";//: // ( 230 )
+		case DDERR_NOGDI              :	// ( 240 )
+			return "DDERR_NOGDI				";//: // ( 240 )
+		case DDERR_NOMIRRORHW         :	// ( 250 )
+			return "DDERR_NOMIRRORHW			";//: // ( 250 )
+		case DDERR_NOTFOUND               :	// ( 255 )
+			return "DDERR_NOTFOUND				";//: // ( 255 )
+		case DDERR_NOOVERLAYHW            :	// ( 260 )
+			return "DDERR_NOOVERLAYHW			";//: // ( 260 )
+		case DDERR_OVERLAPPINGRECTS           :	// ( 270 )
+			return "DDERR_OVERLAPPINGRECTS			";//: // ( 270 )
+		case DDERR_NORASTEROPHW           :	// ( 280 )
+			return "DDERR_NORASTEROPHW			";//: // ( 280 )
+		case DDERR_NOROTATIONHW           :	// ( 290 )
+			return "DDERR_NOROTATIONHW			";//: // ( 290 )
+		case DDERR_NOSTRETCHHW            :	// ( 310 )
+			return "DDERR_NOSTRETCHHW			";//: // ( 310 )
+		case DDERR_NOT4BITCOLOR           :	// ( 316 )
+			return "DDERR_NOT4BITCOLOR			";//: // ( 316 )
+		case DDERR_NOT4BITCOLORINDEX          :	// ( 317 )
+			return "DDERR_NOT4BITCOLORINDEX			";//: // ( 317 )
+		case DDERR_NOT8BITCOLOR           :	// ( 320 )
+			return "DDERR_NOT8BITCOLOR			";//: // ( 320 )
+		case DDERR_NOTEXTUREHW            :	// ( 330 )
+			return "DDERR_NOTEXTUREHW			";//: // ( 330 )
+		case DDERR_NOVSYNCHW              :	// ( 335 )
+			return "DDERR_NOVSYNCHW				";//: // ( 335 )
+		case DDERR_NOZBUFFERHW            :	// ( 340 )
+			return "DDERR_NOZBUFFERHW			";//: // ( 340 )
+		case DDERR_NOZOVERLAYHW           :	// ( 350 )
+			return "DDERR_NOZOVERLAYHW			";//: // ( 350 )
+		case DDERR_OUTOFCAPS              :	// ( 360 )
+			return "DDERR_OUTOFCAPS				";//: // ( 360 )
+		case DDERR_OUTOFVIDEOMEMORY           :	// ( 380 )
+			return "DDERR_OUTOFVIDEOMEMORY			";//: // ( 380 )
+		case DDERR_OVERLAYCANTCLIP            :	// ( 382 )
+			return "DDERR_OVERLAYCANTCLIP			";//: // ( 382 )
+		case DDERR_OVERLAYCOLORKEYONLYONEACTIVE   :	// ( 384 )
+			return "DDERR_OVERLAYCOLORKEYONLYONEACTIVE	";//: // ( 384 )
+		case DDERR_PALETTEBUSY            :	// ( 387 )
+			return "DDERR_PALETTEBUSY			";//: // ( 387 )
+		case DDERR_COLORKEYNOTSET         :	// ( 400 )
+			return "DDERR_COLORKEYNOTSET			";//: // ( 400 )
+		case DDERR_SURFACEALREADYATTACHED     :	// ( 410 )
+			return "DDERR_SURFACEALREADYATTACHED		";//: // ( 410 )
+		case DDERR_SURFACEALREADYDEPENDENT        :	// ( 420 )
+			return "DDERR_SURFACEALREADYDEPENDENT		";//: // ( 420 )
+		case DDERR_SURFACEBUSY            :	// ( 430 )
+			return "DDERR_SURFACEBUSY			";//: // ( 430 )
+		case DDERR_CANTLOCKSURFACE                   : // ( 435 )
+			return "DDERR_CANTLOCKSURFACE";//: // ( 435 )
+		case DDERR_SURFACEISOBSCURED          :	// ( 440 )
+			return "DDERR_SURFACEISOBSCURED			";//: // ( 440 )
+		case DDERR_SURFACELOST            :	// ( 450 )
+			return "DDERR_SURFACELOST			";//: // ( 450 )
+		case DDERR_SURFACENOTATTACHED     :	// ( 460 )
+			return "DDERR_SURFACENOTATTACHED		";//: // ( 460 )
+		case DDERR_TOOBIGHEIGHT           :	// ( 470 )
+			return "DDERR_TOOBIGHEIGHT			";//: // ( 470 )
+		case DDERR_TOOBIGSIZE         :	// ( 480 )
+			return "DDERR_TOOBIGSIZE			";//: // ( 480 )
+		case DDERR_TOOBIGWIDTH            :	// ( 490 )
+			return "DDERR_TOOBIGWIDTH			";//: // ( 490 )
+		case DDERR_UNSUPPORTEDFORMAT          :	// ( 510 )
+			return "DDERR_UNSUPPORTEDFORMAT			";//: // ( 510 )
+		case DDERR_UNSUPPORTEDMASK            :	// ( 520 )
+			return "DDERR_UNSUPPORTEDMASK			";//: // ( 520 )
+		case DDERR_INVALIDSTREAM                     : // ( 521 )
+			return "DDERR_INVALIDSTREAM";//: // ( 521 )
+		case DDERR_VERTICALBLANKINPROGRESS        :	// ( 537 )
+			return "DDERR_VERTICALBLANKINPROGRESS		";//: // ( 537 )
+		case DDERR_WASSTILLDRAWING            :	// ( 540 )
+			return "DDERR_WASSTILLDRAWING			";//: // ( 540 )
+		case DDERR_XALIGN             :	// ( 560 )
+			return "DDERR_XALIGN				";//: // ( 560 )
+		case DDERR_INVALIDDIRECTDRAWGUID      :	// ( 561 )
+			return "DDERR_INVALIDDIRECTDRAWGUID		";//: // ( 561 )
+		case DDERR_DIRECTDRAWALREADYCREATED       :	// ( 562 )
+			return "DDERR_DIRECTDRAWALREADYCREATED		";//: // ( 562 )
+		case DDERR_NODIRECTDRAWHW         :	// ( 563 )
+			return "DDERR_NODIRECTDRAWHW			";//: // ( 563 )
+		case DDERR_PRIMARYSURFACEALREADYEXISTS    :	// ( 564 )
+			return "DDERR_PRIMARYSURFACEALREADYEXISTS	";//: // ( 564 )
+		case DDERR_NOEMULATION            :	// ( 565 )
+			return "DDERR_NOEMULATION			";//: // ( 565 )
+		case DDERR_REGIONTOOSMALL         :	// ( 566 )
+			return "DDERR_REGIONTOOSMALL			";//: // ( 566 )
+		case DDERR_CLIPPERISUSINGHWND     :	// ( 567 )
+			return "DDERR_CLIPPERISUSINGHWND		";//: // ( 567 )
+		case DDERR_NOCLIPPERATTACHED          :	// ( 568 )
+			return "DDERR_NOCLIPPERATTACHED			";//: // ( 568 )
+		case DDERR_NOHWND             :	// ( 569 )
+			return "DDERR_NOHWND				";//: // ( 569 )
+		case DDERR_HWNDSUBCLASSED         :	// ( 570 )
+			return "DDERR_HWNDSUBCLASSED			";//: // ( 570 )
+		case DDERR_HWNDALREADYSET         :	// ( 571 )
+			return "DDERR_HWNDALREADYSET			";//: // ( 571 )
+		case DDERR_NOPALETTEATTACHED          :	// ( 572 )
+			return "DDERR_NOPALETTEATTACHED			";//: // ( 572 )
+		case DDERR_NOPALETTEHW            :	// ( 573 )
+			return "DDERR_NOPALETTEHW			";//: // ( 573 )
+		case DDERR_BLTFASTCANTCLIP            :	// ( 574 )
+			return "DDERR_BLTFASTCANTCLIP			";//: // ( 574 )
+		case DDERR_NOBLTHW                :	// ( 575 )
+			return "DDERR_NOBLTHW				";//: // ( 575 )
+		case DDERR_NODDROPSHW         :	// ( 576 )
+			return "DDERR_NODDROPSHW			";//: // ( 576 )
+		case DDERR_OVERLAYNOTVISIBLE          :	// ( 577 )
+			return "DDERR_OVERLAYNOTVISIBLE			";//: // ( 577 )
+		case DDERR_NOOVERLAYDEST          :	// ( 578 )
+			return "DDERR_NOOVERLAYDEST			";//: // ( 578 )
+		case DDERR_INVALIDPOSITION            :	// ( 579 )
+			return "DDERR_INVALIDPOSITION			";//: // ( 579 )
+		case DDERR_NOTAOVERLAYSURFACE     :	// ( 580 )
+			return "DDERR_NOTAOVERLAYSURFACE		";//: // ( 580 )
+		case DDERR_EXCLUSIVEMODEALREADYSET        :	// ( 581 )
+			return "DDERR_EXCLUSIVEMODEALREADYSET		";//: // ( 581 )
+		case DDERR_NOTFLIPPABLE           :	// ( 582 )
+			return "DDERR_NOTFLIPPABLE			";//: // ( 582 )
+		case DDERR_CANTDUPLICATE          :	// ( 583 )
+			return "DDERR_CANTDUPLICATE			";//: // ( 583 )
+		case DDERR_NOTLOCKED              :	// ( 584 )
+			return "DDERR_NOTLOCKED				";//: // ( 584 )
+		case DDERR_CANTCREATEDC           :	// ( 585 )
+			return "DDERR_CANTCREATEDC			";//: // ( 585 )
+		case DDERR_NODC               :	// ( 586 )
+			return "DDERR_NODC				";//: // ( 586 )
+		case DDERR_WRONGMODE              :	// ( 587 )
+			return "DDERR_WRONGMODE				";//: // ( 587 )
+		case DDERR_IMPLICITLYCREATED          :	// ( 588 )
+			return "DDERR_IMPLICITLYCREATED			";//: // ( 588 )
+		case DDERR_NOTPALETTIZED          :	// ( 589 )
+			return "DDERR_NOTPALETTIZED			";//: // ( 589 )
+		case DDERR_UNSUPPORTEDMODE            :	// ( 590 )
+			return "DDERR_UNSUPPORTEDMODE			";//: // ( 590 )
+		case DDERR_NOMIPMAPHW         :	// ( 591 )
+			return "DDERR_NOMIPMAPHW			";//: // ( 591 )
+		case DDERR_INVALIDSURFACETYPE                : // ( 592 )
+			return "DDERR_INVALIDSURFACETYPE";//: // ( 592 )
+		case DDERR_NOOPTIMIZEHW                      : // ( 600 )
+			return "DDERR_NOOPTIMIZEHW";//: // ( 600 )
+		case DDERR_NOTLOADED                         : // ( 601 )
+			return "DDERR_NOTLOADED";//: // ( 601 )
+		case DDERR_NOFOCUSWINDOW                     : // ( 602 )
+			return "DDERR_NOFOCUSWINDOW";//: // ( 602 )
+		case DDERR_DCALREADYCREATED           :	// ( 620 )
+			return "DDERR_DCALREADYCREATED			";//: // ( 620 )
+		case DDERR_NONONLOCALVIDMEM                  : // ( 630 )
+			return "DDERR_NONONLOCALVIDMEM";//: // ( 630 )
+		case DDERR_CANTPAGELOCK           :	// ( 640 )
+			return "DDERR_CANTPAGELOCK			";//: // ( 640 )
+		case DDERR_CANTPAGEUNLOCK         :	// ( 660 )
+			return "DDERR_CANTPAGEUNLOCK			";//: // ( 660 )
+		case DDERR_NOTPAGELOCKED          :	// ( 680 )
+			return "DDERR_NOTPAGELOCKED			";//: // ( 680 )
+		case DDERR_MOREDATA                   :	// ( 690 )
+			return "DDERR_MOREDATA         			";//: // ( 690 )
+		case DDERR_EXPIRED                           : // ( 691 )
+			return "DDERR_EXPIRED";//: // ( 691 )
+		case DDERR_VIDEONOTACTIVE             :	// ( 695 )
+			return "DDERR_VIDEONOTACTIVE   			";//: // ( 695 )
+		case DDERR_DEVICEDOESNTOWNSURFACE         :	// ( 699 )
+			return "DDERR_DEVICEDOESNTOWNSURFACE   		";//: // ( 699 )
+		case DXFILEERR_BADOBJECT                 : // (850)
+			return "DXFILEERR_BADOBJECT";//: // (850)
+		case DXFILEERR_BADVALUE                  : // (851)
+			return "DXFILEERR_BADVALUE";//: // (851)
+		case DXFILEERR_BADTYPE                   : // (852)
+			return "DXFILEERR_BADTYPE";//: // (852)
+		case DXFILEERR_BADSTREAMHANDLE           : // (853)
+			return "DXFILEERR_BADSTREAMHANDLE";//: // (853)
+		case DXFILEERR_BADALLOC                  : // (854)
+			return "DXFILEERR_BADALLOC";//: // (854)
+		case DXFILEERR_NOTFOUND                  : // (855)
+			return "DXFILEERR_NOTFOUND";//: // (855)
+		case DXFILEERR_NOTDONEYET                : // (856)
+			return "DXFILEERR_NOTDONEYET";//: // (856)
+		case DXFILEERR_FILENOTFOUND              : // (857)
+			return "DXFILEERR_FILENOTFOUND";//: // (857)
+		case DXFILEERR_RESOURCENOTFOUND          : // (858)
+			return "DXFILEERR_RESOURCENOTFOUND";//: // (858)
+		case DXFILEERR_URLNOTFOUND               : // (859)
+			return "DXFILEERR_URLNOTFOUND";//: // (859)
+		case DXFILEERR_BADRESOURCE               : // (860)
+			return "DXFILEERR_BADRESOURCE";//: // (860)
+		case DXFILEERR_BADFILETYPE               : // (861)
+			return "DXFILEERR_BADFILETYPE";//: // (861)
+		case DXFILEERR_BADFILEVERSION            : // (862)
+			return "DXFILEERR_BADFILEVERSION";//: // (862)
+		case DXFILEERR_BADFILEFLOATSIZE          : // (863)
+			return "DXFILEERR_BADFILEFLOATSIZE";//: // (863)
+		case DXFILEERR_BADFILECOMPRESSIONTYPE    : // (864)
+			return "DXFILEERR_BADFILECOMPRESSIONTYPE";//: // (864)
+		case DXFILEERR_BADFILE                   : // (865)
+			return "DXFILEERR_BADFILE";//: // (865)
+		case DXFILEERR_PARSEERROR                : // (866)
+			return "DXFILEERR_PARSEERROR";//: // (866)
+		case DXFILEERR_NOTEMPLATE                : // (867)
+			return "DXFILEERR_NOTEMPLATE";//: // (867)
+		case DXFILEERR_BADARRAYSIZE              : // (868)
+			return "DXFILEERR_BADARRAYSIZE";//: // (868)
+		case DXFILEERR_BADDATAREFERENCE          : // (869)
+			return "DXFILEERR_BADDATAREFERENCE";//: // (869)
+		case DXFILEERR_INTERNALERROR             : // (870)
+			return "DXFILEERR_INTERNALERROR";//: // (870)
+		case DXFILEERR_NOMOREOBJECTS             : // (871)
+			return "DXFILEERR_NOMOREOBJECTS";//: // (871)
+		case DXFILEERR_BADINTRINSICS             : // (872)
+			return "DXFILEERR_BADINTRINSICS";//: // (872)
+		case DXFILEERR_NOMORESTREAMHANDLES       : // (873)
+			return "DXFILEERR_NOMORESTREAMHANDLES";//: // (873)
+		case DXFILEERR_NOMOREDATA                : // (874)
+			return "DXFILEERR_NOMOREDATA";//: // (874)
+		case DXFILEERR_BADCACHEFILE              : // (875)
+			return "DXFILEERR_BADCACHEFILE";//: // (875)
+		case DXFILEERR_NOINTERNET                : // (876)
+			return "DXFILEERR_NOINTERNET";//: // (876)
+
+		case E_UNEXPECTED                     :
+			return "E_UNEXPECTED                     ";
+		case E_NOTIMPL                        :
+			return "E_NOTIMPL                        ";
+		case E_OUTOFMEMORY                    :
+			return "E_OUTOFMEMORY                    ";
+		case E_INVALIDARG                     :
+			return "E_INVALIDARG or DDERR_INVALIDPARAMS";
+		case E_NOINTERFACE                    :
+			return "E_NOINTERFACE                    ";
+		case E_POINTER                        :
+			return "E_POINTER                        ";
+		case E_HANDLE                         :
+			return "E_HANDLE                         ";
+		case E_ABORT                          :
+			return "E_ABORT                          ";
 //    case E_FAIL                           :
 //    return "E_FAIL                           ";
-    case E_ACCESSDENIED                   :
-    return "E_ACCESSDENIED                   ";
-    case E_PENDING                        :
-    return "E_PENDING                        ";
-    case CO_E_INIT_TLS                    :
-    return "CO_E_INIT_TLS                    ";
-    case CO_E_INIT_SHARED_ALLOCATOR       :
-    return "CO_E_INIT_SHARED_ALLOCATOR       ";
-    case CO_E_INIT_MEMORY_ALLOCATOR       :
-    return "CO_E_INIT_MEMORY_ALLOCATOR       ";
-    case CO_E_INIT_CLASS_CACHE            :
-    return "CO_E_INIT_CLASS_CACHE            ";
-    case CO_E_INIT_RPC_CHANNEL            :
-    return "CO_E_INIT_RPC_CHANNEL            ";
-    case CO_E_INIT_TLS_SET_CHANNEL_CONTROL :
-    return "CO_E_INIT_TLS_SET_CHANNEL_CONTROL ";
-    case CO_E_INIT_TLS_CHANNEL_CONTROL    :
-    return "CO_E_INIT_TLS_CHANNEL_CONTROL    ";
-    case CO_E_INIT_UNACCEPTED_USER_ALLOCATOR :
-    return "CO_E_INIT_UNACCEPTED_USER_ALLOCATOR ";
-    case CO_E_INIT_SCM_MUTEX_EXISTS       :
-    return "CO_E_INIT_SCM_MUTEX_EXISTS       ";
-    case CO_E_INIT_SCM_FILE_MAPPING_EXISTS :
-    return "CO_E_INIT_SCM_FILE_MAPPING_EXISTS ";
-    case CO_E_INIT_SCM_MAP_VIEW_OF_FILE   :
-    return "CO_E_INIT_SCM_MAP_VIEW_OF_FILE   ";
-    case CO_E_INIT_SCM_EXEC_FAILURE       :
-    return "CO_E_INIT_SCM_EXEC_FAILURE       ";
-    case CO_E_INIT_ONLY_SINGLE_THREADED   :
-    return "CO_E_INIT_ONLY_SINGLE_THREADED   ";
-    case CO_E_CANT_REMOTE                 :
-    return "CO_E_CANT_REMOTE                 ";
-    case CO_E_BAD_SERVER_NAME             :
-    return "CO_E_BAD_SERVER_NAME             ";
-    case CO_E_WRONG_SERVER_IDENTITY       :
-    return "CO_E_WRONG_SERVER_IDENTITY       ";
-    case CO_E_OLE1DDE_DISABLED            :
-    return "CO_E_OLE1DDE_DISABLED            ";
-    case CO_E_RUNAS_SYNTAX                :
-    return "CO_E_RUNAS_SYNTAX                ";
-    case CO_E_CREATEPROCESS_FAILURE       :
-    return "CO_E_CREATEPROCESS_FAILURE       ";
-    case CO_E_RUNAS_CREATEPROCESS_FAILURE :
-    return "CO_E_RUNAS_CREATEPROCESS_FAILURE ";
-    case CO_E_RUNAS_LOGON_FAILURE         :
-    return "CO_E_RUNAS_LOGON_FAILURE         ";
-    case CO_E_LAUNCH_PERMSSION_DENIED     :
-    return "CO_E_LAUNCH_PERMSSION_DENIED     ";
-    case CO_E_START_SERVICE_FAILURE       :
-    return "CO_E_START_SERVICE_FAILURE       ";
-    case CO_E_REMOTE_COMMUNICATION_FAILURE :
-    return "CO_E_REMOTE_COMMUNICATION_FAILURE ";
-    case CO_E_SERVER_START_TIMEOUT        :
-    return "CO_E_SERVER_START_TIMEOUT        ";
-    case CO_E_CLSREG_INCONSISTENT         :
-    return "CO_E_CLSREG_INCONSISTENT         ";
-    case CO_E_IIDREG_INCONSISTENT         :
-    return "CO_E_IIDREG_INCONSISTENT         ";
-    case CO_E_NOT_SUPPORTED               :
-    return "CO_E_NOT_SUPPORTED               ";
-    case CO_E_RELOAD_DLL                  :
-    return "CO_E_RELOAD_DLL                  ";
-    case CO_E_MSI_ERROR                   :
-    return "CO_E_MSI_ERROR                   ";
-    case OLE_E_OLEVERB                    :
-    return "OLE_E_OLEVERB                    ";
-    case OLE_E_ADVF                       :
-    return "OLE_E_ADVF                       ";
-    case OLE_E_ENUM_NOMORE                :
-    return "OLE_E_ENUM_NOMORE                ";
-    case OLE_E_ADVISENOTSUPPORTED         :
-    return "OLE_E_ADVISENOTSUPPORTED         ";
-    case OLE_E_NOCONNECTION               :
-    return "OLE_E_NOCONNECTION               ";
-    case OLE_E_NOTRUNNING                 :
-    return "OLE_E_NOTRUNNING                 ";
-    case OLE_E_NOCACHE                    :
-    return "OLE_E_NOCACHE                    ";
-    case OLE_E_BLANK                      :
-    return "OLE_E_BLANK                      ";
-    case OLE_E_CLASSDIFF                  :
-    return "OLE_E_CLASSDIFF                  ";
-    case OLE_E_CANT_GETMONIKER            :
-    return "OLE_E_CANT_GETMONIKER            ";
-    case OLE_E_CANT_BINDTOSOURCE          :
-    return "OLE_E_CANT_BINDTOSOURCE          ";
-    case OLE_E_STATIC                     :
-    return "OLE_E_STATIC                     ";
-    case OLE_E_PROMPTSAVECANCELLED        :
-    return "OLE_E_PROMPTSAVECANCELLED        ";
-    case OLE_E_INVALIDRECT                :
-    return "OLE_E_INVALIDRECT                ";
-    case OLE_E_WRONGCOMPOBJ               :
-    return "OLE_E_WRONGCOMPOBJ               ";
-    case OLE_E_INVALIDHWND                :
-    return "OLE_E_INVALIDHWND                ";
-    case OLE_E_NOT_INPLACEACTIVE          :
-    return "OLE_E_NOT_INPLACEACTIVE          ";
-    case OLE_E_CANTCONVERT                :
-    return "OLE_E_CANTCONVERT                ";
-    case OLE_E_NOSTORAGE                  :
-    return "OLE_E_NOSTORAGE                  ";
-    case DV_E_FORMATETC                   :
-    return "DV_E_FORMATETC                   ";
-    case DV_E_DVTARGETDEVICE              :
-    return "DV_E_DVTARGETDEVICE              ";
-    case DV_E_STGMEDIUM                   :
-    return "DV_E_STGMEDIUM                   ";
-    case DV_E_STATDATA                    :
-    return "DV_E_STATDATA                    ";
-    case DV_E_LINDEX                      :
-    return "DV_E_LINDEX                      ";
-    case DV_E_TYMED                       :
-    return "DV_E_TYMED                       ";
-    case DV_E_CLIPFORMAT                  :
-    return "DV_E_CLIPFORMAT                  ";
-    case DV_E_DVASPECT                    :
-    return "DV_E_DVASPECT                    ";
-    case DV_E_DVTARGETDEVICE_SIZE         :
-    return "DV_E_DVTARGETDEVICE_SIZE         ";
-    case DV_E_NOIVIEWOBJECT               :
-    return "DV_E_NOIVIEWOBJECT               ";
-    case DRAGDROP_E_NOTREGISTERED         :
-    return "DRAGDROP_E_NOTREGISTERED         ";
-    case DRAGDROP_E_ALREADYREGISTERED     :
-    return "DRAGDROP_E_ALREADYREGISTERED     ";
-    case DRAGDROP_E_INVALIDHWND           :
-    return "DRAGDROP_E_INVALIDHWND           ";
-    case CLASS_E_NOAGGREGATION            :
-    return "CLASS_E_NOAGGREGATION            ";
-    case CLASS_E_CLASSNOTAVAILABLE        :
-    return "CLASS_E_CLASSNOTAVAILABLE        ";
-    case CLASS_E_NOTLICENSED              :
-    return "CLASS_E_NOTLICENSED              ";
-    case VIEW_E_DRAW                      :
-    return "VIEW_E_DRAW                      ";
-    case REGDB_E_READREGDB                :
-    return "REGDB_E_READREGDB                ";
-    case REGDB_E_WRITEREGDB               :
-    return "REGDB_E_WRITEREGDB               ";
-    case REGDB_E_KEYMISSING               :
-    return "REGDB_E_KEYMISSING               ";
-    case REGDB_E_INVALIDVALUE             :
-    return "REGDB_E_INVALIDVALUE             ";
-    case REGDB_E_CLASSNOTREG              :
-    return "REGDB_E_CLASSNOTREG              ";
-    case REGDB_E_IIDNOTREG                :
-    return "REGDB_E_IIDNOTREG                ";
-    case CAT_E_CATIDNOEXIST               :
-    return "CAT_E_CATIDNOEXIST               ";
-    case CAT_E_NODESCRIPTION              :
-    return "CAT_E_NODESCRIPTION              ";
-    case CS_E_PACKAGE_NOTFOUND            :
-    return "CS_E_PACKAGE_NOTFOUND            ";
-    case CS_E_NOT_DELETABLE               :
-    return "CS_E_NOT_DELETABLE               ";
-    case CS_E_CLASS_NOTFOUND              :
-    return "CS_E_CLASS_NOTFOUND              ";
-    case CS_E_INVALID_VERSION             :
-    return "CS_E_INVALID_VERSION             ";
-    case CS_E_NO_CLASSSTORE               :
-    return "CS_E_NO_CLASSSTORE               ";
-    case CACHE_E_NOCACHE_UPDATED          :
-    return "CACHE_E_NOCACHE_UPDATED          ";
-    case OLEOBJ_E_NOVERBS                 :
-    return "OLEOBJ_E_NOVERBS                 ";
-    case OLEOBJ_E_INVALIDVERB             :
-    return "OLEOBJ_E_INVALIDVERB             ";
-    case INPLACE_E_NOTUNDOABLE            :
-    return "INPLACE_E_NOTUNDOABLE            ";
-    case INPLACE_E_NOTOOLSPACE            :
-    return "INPLACE_E_NOTOOLSPACE            ";
-    case CONVERT10_E_OLESTREAM_GET        :
-    return "CONVERT10_E_OLESTREAM_GET        ";
-    case CONVERT10_E_OLESTREAM_PUT        :
-    return "CONVERT10_E_OLESTREAM_PUT        ";
-    case CONVERT10_E_OLESTREAM_FMT        :
-    return "CONVERT10_E_OLESTREAM_FMT        ";
-    case CONVERT10_E_OLESTREAM_BITMAP_TO_DIB :
-    return "CONVERT10_E_OLESTREAM_BITMAP_TO_DIB ";
-    case CONVERT10_E_STG_FMT              :
-    return "CONVERT10_E_STG_FMT              ";
-    case CONVERT10_E_STG_NO_STD_STREAM    :
-    return "CONVERT10_E_STG_NO_STD_STREAM    ";
-    case CONVERT10_E_STG_DIB_TO_BITMAP    :
-    return "CONVERT10_E_STG_DIB_TO_BITMAP    ";
-    case CLIPBRD_E_CANT_OPEN              :
-    return "CLIPBRD_E_CANT_OPEN              ";
-    case CLIPBRD_E_CANT_EMPTY             :
-    return "CLIPBRD_E_CANT_EMPTY             ";
-    case CLIPBRD_E_CANT_SET               :
-    return "CLIPBRD_E_CANT_SET               ";
-    case CLIPBRD_E_BAD_DATA               :
-    return "CLIPBRD_E_BAD_DATA               ";
-    case CLIPBRD_E_CANT_CLOSE             :
-    return "CLIPBRD_E_CANT_CLOSE             ";
-    case MK_E_CONNECTMANUALLY             :
-    return "MK_E_CONNECTMANUALLY             ";
-    case MK_E_EXCEEDEDDEADLINE            :
-    return "MK_E_EXCEEDEDDEADLINE            ";
-    case MK_E_NEEDGENERIC                 :
-    return "MK_E_NEEDGENERIC                 ";
-    case MK_E_UNAVAILABLE                 :
-    return "MK_E_UNAVAILABLE                 ";
-    case MK_E_SYNTAX                      :
-    return "MK_E_SYNTAX                      ";
-    case MK_E_NOOBJECT                    :
-    return "MK_E_NOOBJECT                    ";
-    case MK_E_INVALIDEXTENSION            :
-    return "MK_E_INVALIDEXTENSION            ";
-    case MK_E_INTERMEDIATEINTERFACENOTSUPPORTED :
-    return "MK_E_INTERMEDIATEINTERFACENOTSUPPORTED ";
-    case MK_E_NOTBINDABLE                 :
-    return "MK_E_NOTBINDABLE                 ";
-    case MK_E_NOTBOUND                    :
-    return "MK_E_NOTBOUND                    ";
-    case MK_E_CANTOPENFILE                :
-    return "MK_E_CANTOPENFILE                ";
-    case MK_E_MUSTBOTHERUSER              :
-    return "MK_E_MUSTBOTHERUSER              ";
-    case MK_E_NOINVERSE                   :
-    return "MK_E_NOINVERSE                   ";
-    case MK_E_NOSTORAGE                   :
-    return "MK_E_NOSTORAGE                   ";
-    case MK_E_NOPREFIX                    :
-    return "MK_E_NOPREFIX                    ";
-    case MK_E_ENUMERATION_FAILED          :
-    return "MK_E_ENUMERATION_FAILED          ";
-    case CO_E_NOTINITIALIZED              :
-    return "CO_E_NOTINITIALIZED              ";
-    case CO_E_ALREADYINITIALIZED          :
-    return "CO_E_ALREADYINITIALIZED          ";
-    case CO_E_CANTDETERMINECLASS          :
-    return "CO_E_CANTDETERMINECLASS          ";
-    case CO_E_CLASSSTRING                 :
-    return "CO_E_CLASSSTRING                 ";
-    case CO_E_IIDSTRING                   :
-    return "CO_E_IIDSTRING                   ";
-    case CO_E_APPNOTFOUND                 :
-    return "CO_E_APPNOTFOUND                 ";
-    case CO_E_APPSINGLEUSE                :
-    return "CO_E_APPSINGLEUSE                ";
-    case CO_E_ERRORINAPP                  :
-    return "CO_E_ERRORINAPP                  ";
-    case CO_E_DLLNOTFOUND                 :
-    return "CO_E_DLLNOTFOUND                 ";
-    case CO_E_ERRORINDLL                  :
-    return "CO_E_ERRORINDLL                  ";
-    case CO_E_WRONGOSFORAPP               :
-    return "CO_E_WRONGOSFORAPP               ";
-    case CO_E_OBJNOTREG                   :
-    return "CO_E_OBJNOTREG                   ";
-    case CO_E_OBJISREG                    :
-    return "CO_E_OBJISREG                    ";
-    case CO_E_OBJNOTCONNECTED             :
-    return "CO_E_OBJNOTCONNECTED             ";
-    case CO_E_APPDIDNTREG                 :
-    return "CO_E_APPDIDNTREG                 ";
-    case CO_E_RELEASED                    :
-    return "CO_E_RELEASED                    ";
-    case CO_E_FAILEDTOIMPERSONATE         :
-    return "CO_E_FAILEDTOIMPERSONATE         ";
-    case CO_E_FAILEDTOGETSECCTX           :
-    return "CO_E_FAILEDTOGETSECCTX           ";
-    case CO_E_FAILEDTOOPENTHREADTOKEN     :
-    return "CO_E_FAILEDTOOPENTHREADTOKEN     ";
-    case CO_E_FAILEDTOGETTOKENINFO        :
-    return "CO_E_FAILEDTOGETTOKENINFO        ";
-    case CO_E_TRUSTEEDOESNTMATCHCLIENT    :
-    return "CO_E_TRUSTEEDOESNTMATCHCLIENT    ";
-    case CO_E_FAILEDTOQUERYCLIENTBLANKET  :
-    return "CO_E_FAILEDTOQUERYCLIENTBLANKET  ";
-    case CO_E_FAILEDTOSETDACL             :
-    return "CO_E_FAILEDTOSETDACL             ";
-    case CO_E_ACCESSCHECKFAILED           :
-    return "CO_E_ACCESSCHECKFAILED           ";
-    case CO_E_NETACCESSAPIFAILED          :
-    return "CO_E_NETACCESSAPIFAILED          ";
-    case CO_E_WRONGTRUSTEENAMESYNTAX      :
-    return "CO_E_WRONGTRUSTEENAMESYNTAX      ";
-    case CO_E_INVALIDSID                  :
-    return "CO_E_INVALIDSID                  ";
-    case CO_E_CONVERSIONFAILED            :
-    return "CO_E_CONVERSIONFAILED            ";
-    case CO_E_NOMATCHINGSIDFOUND          :
-    return "CO_E_NOMATCHINGSIDFOUND          ";
-    case CO_E_LOOKUPACCSIDFAILED          :
-    return "CO_E_LOOKUPACCSIDFAILED          ";
-    case CO_E_NOMATCHINGNAMEFOUND         :
-    return "CO_E_NOMATCHINGNAMEFOUND         ";
-    case CO_E_LOOKUPACCNAMEFAILED         :
-    return "CO_E_LOOKUPACCNAMEFAILED         ";
-    case CO_E_SETSERLHNDLFAILED           :
-    return "CO_E_SETSERLHNDLFAILED           ";
-    case CO_E_FAILEDTOGETWINDIR           :
-    return "CO_E_FAILEDTOGETWINDIR           ";
-    case CO_E_PATHTOOLONG                 :
-    return "CO_E_PATHTOOLONG                 ";
-    case CO_E_FAILEDTOGENUUID             :
-    return "CO_E_FAILEDTOGENUUID             ";
-    case CO_E_FAILEDTOCREATEFILE          :
-    return "CO_E_FAILEDTOCREATEFILE          ";
-    case CO_E_FAILEDTOCLOSEHANDLE         :
-    return "CO_E_FAILEDTOCLOSEHANDLE         ";
-    case CO_E_EXCEEDSYSACLLIMIT           :
-    return "CO_E_EXCEEDSYSACLLIMIT           ";
-    case CO_E_ACESINWRONGORDER            :
-    return "CO_E_ACESINWRONGORDER            ";
-    case CO_E_INCOMPATIBLESTREAMVERSION   :
-    return "CO_E_INCOMPATIBLESTREAMVERSION   ";
-    case CO_E_FAILEDTOOPENPROCESSTOKEN    :
-    return "CO_E_FAILEDTOOPENPROCESSTOKEN    ";
-    case CO_E_DECODEFAILED                :
-    return "CO_E_DECODEFAILED                ";
-    case CO_E_ACNOTINITIALIZED            :
-    return "CO_E_ACNOTINITIALIZED            ";
-    case OLE_S_USEREG                     :
-    return "OLE_S_USEREG                     ";
-    case OLE_S_STATIC                     :
-    return "OLE_S_STATIC                     ";
-    case OLE_S_MAC_CLIPFORMAT             :
-    return "OLE_S_MAC_CLIPFORMAT             ";
-    case DRAGDROP_S_DROP                  :
-    return "DRAGDROP_S_DROP                  ";
-    case DRAGDROP_S_CANCEL                :
-    return "DRAGDROP_S_CANCEL                ";
-    case DRAGDROP_S_USEDEFAULTCURSORS     :
-    return "DRAGDROP_S_USEDEFAULTCURSORS     ";
-    case DATA_S_SAMEFORMATETC             :
-    return "DATA_S_SAMEFORMATETC             ";
-    case VIEW_S_ALREADY_FROZEN            :
-    return "VIEW_S_ALREADY_FROZEN            ";
-    case CACHE_S_FORMATETC_NOTSUPPORTED   :
-    return "CACHE_S_FORMATETC_NOTSUPPORTED   ";
-    case CACHE_S_SAMECACHE                :
-    return "CACHE_S_SAMECACHE                ";
-    case CACHE_S_SOMECACHES_NOTUPDATED    :
-    return "CACHE_S_SOMECACHES_NOTUPDATED    ";
-    case OLEOBJ_S_INVALIDVERB             :
-    return "OLEOBJ_S_INVALIDVERB             ";
-    case OLEOBJ_S_CANNOT_DOVERB_NOW       :
-    return "OLEOBJ_S_CANNOT_DOVERB_NOW       ";
-    case OLEOBJ_S_INVALIDHWND             :
-    return "OLEOBJ_S_INVALIDHWND             ";
-    case INPLACE_S_TRUNCATED              :
-    return "INPLACE_S_TRUNCATED              ";
-    case CONVERT10_S_NO_PRESENTATION      :
-    return "CONVERT10_S_NO_PRESENTATION      ";
-    case MK_S_REDUCED_TO_SELF             :
-    return "MK_S_REDUCED_TO_SELF             ";
-    case MK_S_ME                          :
-    return "MK_S_ME                          ";
-    case MK_S_HIM                         :
-    return "MK_S_HIM                         ";
-    case MK_S_US                          :
-    return "MK_S_US                          ";
-    case MK_S_MONIKERALREADYREGISTERED    :
-    return "MK_S_MONIKERALREADYREGISTERED    ";
-    case CO_E_CLASS_CREATE_FAILED         :
-    return "CO_E_CLASS_CREATE_FAILED         ";
-    case CO_E_SCM_ERROR                   :
-    return "CO_E_SCM_ERROR                   ";
-    case CO_E_SCM_RPC_FAILURE             :
-    return "CO_E_SCM_RPC_FAILURE             ";
-    case CO_E_BAD_PATH                    :
-    return "CO_E_BAD_PATH                    ";
-    case CO_E_SERVER_EXEC_FAILURE         :
-    return "CO_E_SERVER_EXEC_FAILURE         ";
-    case CO_E_OBJSRV_RPC_FAILURE          :
-    return "CO_E_OBJSRV_RPC_FAILURE          ";
-    case MK_E_NO_NORMALIZED               :
-    return "MK_E_NO_NORMALIZED               ";
-    case CO_E_SERVER_STOPPING             :
-    return "CO_E_SERVER_STOPPING             ";
-    case MEM_E_INVALID_ROOT               :
-    return "MEM_E_INVALID_ROOT               ";
-    case MEM_E_INVALID_LINK               :
-    return "MEM_E_INVALID_LINK               ";
-    case MEM_E_INVALID_SIZE               :
-    return "MEM_E_INVALID_SIZE               ";
-    case CO_S_NOTALLINTERFACES            :
-    return "CO_S_NOTALLINTERFACES            ";
-    case DISP_E_UNKNOWNINTERFACE          :
-    return "DISP_E_UNKNOWNINTERFACE          ";
-    case DISP_E_MEMBERNOTFOUND            :
-    return "DISP_E_MEMBERNOTFOUND            ";
-    case DISP_E_PARAMNOTFOUND             :
-    return "DISP_E_PARAMNOTFOUND             ";
-    case DISP_E_TYPEMISMATCH              :
-    return "DISP_E_TYPEMISMATCH              ";
-    case DISP_E_UNKNOWNNAME               :
-    return "DISP_E_UNKNOWNNAME               ";
-    case DISP_E_NONAMEDARGS               :
-    return "DISP_E_NONAMEDARGS               ";
-    case DISP_E_BADVARTYPE                :
-    return "DISP_E_BADVARTYPE                ";
-    case DISP_E_EXCEPTION                 :
-    return "DISP_E_EXCEPTION                 ";
-    case DISP_E_OVERFLOW                  :
-    return "DISP_E_OVERFLOW                  ";
-    case DISP_E_BADINDEX                  :
-    return "DISP_E_BADINDEX                  ";
-    case DISP_E_UNKNOWNLCID               :
-    return "DISP_E_UNKNOWNLCID               ";
-    case DISP_E_ARRAYISLOCKED             :
-    return "DISP_E_ARRAYISLOCKED             ";
-    case DISP_E_BADPARAMCOUNT             :
-    return "DISP_E_BADPARAMCOUNT             ";
-    case DISP_E_PARAMNOTOPTIONAL          :
-    return "DISP_E_PARAMNOTOPTIONAL          ";
-    case DISP_E_BADCALLEE                 :
-    return "DISP_E_BADCALLEE                 ";
-    case DISP_E_NOTACOLLECTION            :
-    return "DISP_E_NOTACOLLECTION            ";
-    case DISP_E_DIVBYZERO                 :
-    return "DISP_E_DIVBYZERO                 ";
-    case TYPE_E_BUFFERTOOSMALL            :
-    return "TYPE_E_BUFFERTOOSMALL            ";
-    case TYPE_E_FIELDNOTFOUND             :
-    return "TYPE_E_FIELDNOTFOUND             ";
-    case TYPE_E_INVDATAREAD               :
-    return "TYPE_E_INVDATAREAD               ";
-    case TYPE_E_UNSUPFORMAT               :
-    return "TYPE_E_UNSUPFORMAT               ";
-    case TYPE_E_REGISTRYACCESS            :
-    return "TYPE_E_REGISTRYACCESS            ";
-    case TYPE_E_LIBNOTREGISTERED          :
-    return "TYPE_E_LIBNOTREGISTERED          ";
-    case TYPE_E_UNDEFINEDTYPE             :
-    return "TYPE_E_UNDEFINEDTYPE             ";
-    case TYPE_E_QUALIFIEDNAMEDISALLOWED   :
-    return "TYPE_E_QUALIFIEDNAMEDISALLOWED   ";
-    case TYPE_E_INVALIDSTATE              :
-    return "TYPE_E_INVALIDSTATE              ";
-    case TYPE_E_WRONGTYPEKIND             :
-    return "TYPE_E_WRONGTYPEKIND             ";
-    case TYPE_E_ELEMENTNOTFOUND           :
-    return "TYPE_E_ELEMENTNOTFOUND           ";
-    case TYPE_E_AMBIGUOUSNAME             :
-    return "TYPE_E_AMBIGUOUSNAME             ";
-    case TYPE_E_NAMECONFLICT              :
-    return "TYPE_E_NAMECONFLICT              ";
-    case TYPE_E_UNKNOWNLCID               :
-    return "TYPE_E_UNKNOWNLCID               ";
-    case TYPE_E_DLLFUNCTIONNOTFOUND       :
-    return "TYPE_E_DLLFUNCTIONNOTFOUND       ";
-    case TYPE_E_BADMODULEKIND             :
-    return "TYPE_E_BADMODULEKIND             ";
-    case TYPE_E_SIZETOOBIG                :
-    return "TYPE_E_SIZETOOBIG                ";
-    case TYPE_E_DUPLICATEID               :
-    return "TYPE_E_DUPLICATEID               ";
-    case TYPE_E_INVALIDID                 :
-    return "TYPE_E_INVALIDID                 ";
-    case TYPE_E_TYPEMISMATCH              :
-    return "TYPE_E_TYPEMISMATCH              ";
-    case TYPE_E_OUTOFBOUNDS               :
-    return "TYPE_E_OUTOFBOUNDS               ";
-    case TYPE_E_IOERROR                   :
-    return "TYPE_E_IOERROR                   ";
-    case TYPE_E_CANTCREATETMPFILE         :
-    return "TYPE_E_CANTCREATETMPFILE         ";
-    case TYPE_E_CANTLOADLIBRARY           :
-    return "TYPE_E_CANTLOADLIBRARY           ";
-    case TYPE_E_INCONSISTENTPROPFUNCS     :
-    return "TYPE_E_INCONSISTENTPROPFUNCS     ";
-    case TYPE_E_CIRCULARTYPE              :
-    return "TYPE_E_CIRCULARTYPE              ";
-    case STG_E_INVALIDFUNCTION            :
-    return "STG_E_INVALIDFUNCTION            ";
-    case STG_E_FILENOTFOUND               :
-    return "STG_E_FILENOTFOUND               ";
-    case STG_E_PATHNOTFOUND               :
-    return "STG_E_PATHNOTFOUND               ";
-    case STG_E_TOOMANYOPENFILES           :
-    return "STG_E_TOOMANYOPENFILES           ";
-    case STG_E_ACCESSDENIED               :
-    return "STG_E_ACCESSDENIED               ";
-    case STG_E_INVALIDHANDLE              :
-    return "STG_E_INVALIDHANDLE              ";
-    case STG_E_INSUFFICIENTMEMORY         :
-    return "STG_E_INSUFFICIENTMEMORY         ";
-    case STG_E_INVALIDPOINTER             :
-    return "STG_E_INVALIDPOINTER             ";
-    case STG_E_NOMOREFILES                :
-    return "STG_E_NOMOREFILES                ";
-    case STG_E_DISKISWRITEPROTECTED       :
-    return "STG_E_DISKISWRITEPROTECTED       ";
-    case STG_E_SEEKERROR                  :
-    return "STG_E_SEEKERROR                  ";
-    case STG_E_WRITEFAULT                 :
-    return "STG_E_WRITEFAULT                 ";
-    case STG_E_READFAULT                  :
-    return "STG_E_READFAULT                  ";
-    case STG_E_SHAREVIOLATION             :
-    return "STG_E_SHAREVIOLATION             ";
-    case STG_E_LOCKVIOLATION              :
-    return "STG_E_LOCKVIOLATION              ";
-    case STG_E_FILEALREADYEXISTS          :
-    return "STG_E_FILEALREADYEXISTS          ";
-    case STG_E_INVALIDPARAMETER           :
-    return "STG_E_INVALIDPARAMETER           ";
-    case STG_E_MEDIUMFULL                 :
-    return "STG_E_MEDIUMFULL                 ";
-    case STG_E_PROPSETMISMATCHED          :
-    return "STG_E_PROPSETMISMATCHED          ";
-    case STG_E_ABNORMALAPIEXIT            :
-    return "STG_E_ABNORMALAPIEXIT            ";
-    case STG_E_INVALIDHEADER              :
-    return "STG_E_INVALIDHEADER              ";
-    case STG_E_INVALIDNAME                :
-    return "STG_E_INVALIDNAME                ";
-    case STG_E_UNKNOWN                    :
-    return "STG_E_UNKNOWN                    ";
-    case STG_E_UNIMPLEMENTEDFUNCTION      :
-    return "STG_E_UNIMPLEMENTEDFUNCTION      ";
-    case STG_E_INVALIDFLAG                :
-    return "STG_E_INVALIDFLAG                ";
-    case STG_E_INUSE                      :
-    return "STG_E_INUSE                      ";
-    case STG_E_NOTCURRENT                 :
-    return "STG_E_NOTCURRENT                 ";
-    case STG_E_REVERTED                   :
-    return "STG_E_REVERTED                   ";
-    case STG_E_CANTSAVE                   :
-    return "STG_E_CANTSAVE                   ";
-    case STG_E_OLDFORMAT                  :
-    return "STG_E_OLDFORMAT                  ";
-    case STG_E_OLDDLL                     :
-    return "STG_E_OLDDLL                     ";
-    case STG_E_SHAREREQUIRED              :
-    return "STG_E_SHAREREQUIRED              ";
-    case STG_E_NOTFILEBASEDSTORAGE        :
-    return "STG_E_NOTFILEBASEDSTORAGE        ";
-    case STG_E_EXTANTMARSHALLINGS         :
-    return "STG_E_EXTANTMARSHALLINGS         ";
-    case STG_E_DOCFILECORRUPT             :
-    return "STG_E_DOCFILECORRUPT             ";
-    case STG_E_BADBASEADDRESS             :
-    return "STG_E_BADBASEADDRESS             ";
-    case STG_E_INCOMPLETE                 :
-    return "STG_E_INCOMPLETE                 ";
-    case STG_E_TERMINATED                 :
-    return "STG_E_TERMINATED                 ";
-    case STG_S_CONVERTED                  :
-    return "STG_S_CONVERTED                  ";
-    case STG_S_BLOCK                      :
-    return "STG_S_BLOCK                      ";
-    case STG_S_RETRYNOW                   :
-    return "STG_S_RETRYNOW                   ";
-    case STG_S_MONITORING                 :
-    return "STG_S_MONITORING                 ";
-    case STG_S_MULTIPLEOPENS              :
-    return "STG_S_MULTIPLEOPENS              ";
-    case STG_S_CONSOLIDATIONFAILED        :
-    return "STG_S_CONSOLIDATIONFAILED        ";
-    case STG_S_CANNOTCONSOLIDATE          :
-    return "STG_S_CANNOTCONSOLIDATE          ";
-    case RPC_E_CALL_REJECTED              :
-    return "RPC_E_CALL_REJECTED              ";
-    case RPC_E_CALL_CANCELED              :
-    return "RPC_E_CALL_CANCELED              ";
-    case RPC_E_CANTPOST_INSENDCALL        :
-    return "RPC_E_CANTPOST_INSENDCALL        ";
-    case RPC_E_CANTCALLOUT_INASYNCCALL    :
-    return "RPC_E_CANTCALLOUT_INASYNCCALL    ";
-    case RPC_E_CANTCALLOUT_INEXTERNALCALL :
-    return "RPC_E_CANTCALLOUT_INEXTERNALCALL ";
-    case RPC_E_CONNECTION_TERMINATED      :
-    return "RPC_E_CONNECTION_TERMINATED      ";
-    case RPC_E_SERVER_DIED                :
-    return "RPC_E_SERVER_DIED                ";
-    case RPC_E_CLIENT_DIED                :
-    return "RPC_E_CLIENT_DIED                ";
-    case RPC_E_INVALID_DATAPACKET         :
-    return "RPC_E_INVALID_DATAPACKET         ";
-    case RPC_E_CANTTRANSMIT_CALL          :
-    return "RPC_E_CANTTRANSMIT_CALL          ";
-    case RPC_E_CLIENT_CANTMARSHAL_DATA    :
-    return "RPC_E_CLIENT_CANTMARSHAL_DATA    ";
-    case RPC_E_CLIENT_CANTUNMARSHAL_DATA  :
-    return "RPC_E_CLIENT_CANTUNMARSHAL_DATA  ";
-    case RPC_E_SERVER_CANTMARSHAL_DATA    :
-    return "RPC_E_SERVER_CANTMARSHAL_DATA    ";
-    case RPC_E_SERVER_CANTUNMARSHAL_DATA  :
-    return "RPC_E_SERVER_CANTUNMARSHAL_DATA  ";
-    case RPC_E_INVALID_DATA               :
-    return "RPC_E_INVALID_DATA               ";
-    case RPC_E_INVALID_PARAMETER          :
-    return "RPC_E_INVALID_PARAMETER          ";
-    case RPC_E_CANTCALLOUT_AGAIN          :
-    return "RPC_E_CANTCALLOUT_AGAIN          ";
-    case RPC_E_SERVER_DIED_DNE            :
-    return "RPC_E_SERVER_DIED_DNE            ";
-    case RPC_E_SYS_CALL_FAILED            :
-    return "RPC_E_SYS_CALL_FAILED            ";
-    case RPC_E_OUT_OF_RESOURCES           :
-    return "RPC_E_OUT_OF_RESOURCES           ";
-    case RPC_E_ATTEMPTED_MULTITHREAD      :
-    return "RPC_E_ATTEMPTED_MULTITHREAD      ";
-    case RPC_E_NOT_REGISTERED             :
-    return "RPC_E_NOT_REGISTERED             ";
-    case RPC_E_FAULT                      :
-    return "RPC_E_FAULT                      ";
-    case RPC_E_SERVERFAULT                :
-    return "RPC_E_SERVERFAULT                ";
-    case RPC_E_CHANGED_MODE               :
-    return "RPC_E_CHANGED_MODE               ";
-    case RPC_E_INVALIDMETHOD              :
-    return "RPC_E_INVALIDMETHOD              ";
-    case RPC_E_DISCONNECTED               :
-    return "RPC_E_DISCONNECTED               ";
-    case RPC_E_RETRY                      :
-    return "RPC_E_RETRY                      ";
-    case RPC_E_SERVERCALL_RETRYLATER      :
-    return "RPC_E_SERVERCALL_RETRYLATER      ";
-    case RPC_E_SERVERCALL_REJECTED        :
-    return "RPC_E_SERVERCALL_REJECTED        ";
-    case RPC_E_INVALID_CALLDATA           :
-    return "RPC_E_INVALID_CALLDATA           ";
-    case RPC_E_CANTCALLOUT_ININPUTSYNCCALL :
-    return "RPC_E_CANTCALLOUT_ININPUTSYNCCALL ";
-    case RPC_E_WRONG_THREAD               :
-    return "RPC_E_WRONG_THREAD               ";
-    case RPC_E_THREAD_NOT_INIT            :
-    return "RPC_E_THREAD_NOT_INIT            ";
-    case RPC_E_VERSION_MISMATCH           :
-    return "RPC_E_VERSION_MISMATCH           ";
-    case RPC_E_INVALID_HEADER             :
-    return "RPC_E_INVALID_HEADER             ";
-    case RPC_E_INVALID_EXTENSION          :
-    return "RPC_E_INVALID_EXTENSION          ";
-    case RPC_E_INVALID_IPID               :
-    return "RPC_E_INVALID_IPID               ";
-    case RPC_E_INVALID_OBJECT             :
-    return "RPC_E_INVALID_OBJECT             ";
-    case RPC_S_CALLPENDING                :
-    return "RPC_S_CALLPENDING                ";
-    case RPC_S_WAITONTIMER                :
-    return "RPC_S_WAITONTIMER                ";
-    case RPC_E_CALL_COMPLETE              :
-    return "RPC_E_CALL_COMPLETE              ";
-    case RPC_E_UNSECURE_CALL              :
-    return "RPC_E_UNSECURE_CALL              ";
-    case RPC_E_TOO_LATE                   :
-    return "RPC_E_TOO_LATE                   ";
-    case RPC_E_NO_GOOD_SECURITY_PACKAGES  :
-    return "RPC_E_NO_GOOD_SECURITY_PACKAGES  ";
-    case RPC_E_ACCESS_DENIED              :
-    return "RPC_E_ACCESS_DENIED              ";
-    case RPC_E_REMOTE_DISABLED            :
-    return "RPC_E_REMOTE_DISABLED            ";
-    case RPC_E_INVALID_OBJREF             :
-    return "RPC_E_INVALID_OBJREF             ";
-    case RPC_E_NO_CONTEXT                 :
-    return "RPC_E_NO_CONTEXT                 ";
-    case RPC_E_TIMEOUT                    :
-    return "RPC_E_TIMEOUT                    ";
-    case RPC_E_NO_SYNC                    :
-    return "RPC_E_NO_SYNC                    ";
-    case RPC_E_UNEXPECTED                 :
-    return "RPC_E_UNEXPECTED                 ";
-    case NTE_BAD_UID                      :
-    return "NTE_BAD_UID                      ";
-    case NTE_BAD_HASH                     :
-    return "NTE_BAD_HASH                     ";
-    //case NTE_BAD_HASH                     :
-    //return "NTE_BAD_HASH                     ";
-    case NTE_BAD_KEY                      :
-    return "NTE_BAD_KEY                      ";
-    case NTE_BAD_LEN                      :
-    return "NTE_BAD_LEN                      ";
-    case NTE_BAD_DATA                     :
-    return "NTE_BAD_DATA                     ";
-    case NTE_BAD_SIGNATURE                :
-    return "NTE_BAD_SIGNATURE                ";
-    case NTE_BAD_VER                      :
-    return "NTE_BAD_VER                      ";
-    case NTE_BAD_ALGID                    :
-    return "NTE_BAD_ALGID                    ";
-    case NTE_BAD_FLAGS                    :
-    return "NTE_BAD_FLAGS                    ";
-    case NTE_BAD_TYPE                     :
-    return "NTE_BAD_TYPE                     ";
-    case NTE_BAD_KEY_STATE                :
-    return "NTE_BAD_KEY_STATE                ";
-    case NTE_BAD_HASH_STATE               :
-    return "NTE_BAD_HASH_STATE               ";
-    case NTE_NO_KEY                       :
-    return "NTE_NO_KEY                       ";
-    case NTE_NO_MEMORY                    :
-    return "NTE_NO_MEMORY                    ";
-    case NTE_EXISTS                       :
-    return "NTE_EXISTS                       ";
-    case NTE_PERM                         :
-    return "NTE_PERM                         ";
-    case NTE_NOT_FOUND                    :
-    return "NTE_NOT_FOUND                    ";
-    case NTE_DOUBLE_ENCRYPT               :
-    return "NTE_DOUBLE_ENCRYPT               ";
-    case NTE_BAD_PROVIDER                 :
-    return "NTE_BAD_PROVIDER                 ";
-    case NTE_BAD_PROV_TYPE                :
-    return "NTE_BAD_PROV_TYPE                ";
-    case NTE_BAD_PUBLIC_KEY               :
-    return "NTE_BAD_PUBLIC_KEY               ";
-    case NTE_BAD_KEYSET                   :
-    return "NTE_BAD_KEYSET                   ";
-    case NTE_PROV_TYPE_NOT_DEF            :
-    return "NTE_PROV_TYPE_NOT_DEF            ";
-    case NTE_PROV_TYPE_ENTRY_BAD          :
-    return "NTE_PROV_TYPE_ENTRY_BAD          ";
-    case NTE_KEYSET_NOT_DEF               :
-    return "NTE_KEYSET_NOT_DEF               ";
-    case NTE_KEYSET_ENTRY_BAD             :
-    return "NTE_KEYSET_ENTRY_BAD             ";
-    case NTE_PROV_TYPE_NO_MATCH           :
-    return "NTE_PROV_TYPE_NO_MATCH           ";
-    case NTE_SIGNATURE_FILE_BAD           :
-    return "NTE_SIGNATURE_FILE_BAD           ";
-    case NTE_PROVIDER_DLL_FAIL            :
-    return "NTE_PROVIDER_DLL_FAIL            ";
-    case NTE_PROV_DLL_NOT_FOUND           :
-    return "NTE_PROV_DLL_NOT_FOUND           ";
-    case NTE_BAD_KEYSET_PARAM             :
-    return "NTE_BAD_KEYSET_PARAM             ";
-    case NTE_FAIL                         :
-    return "NTE_FAIL                         ";
-    case NTE_SYS_ERR                      :
-    return "NTE_SYS_ERR                      ";
-    case CRYPT_E_MSG_ERROR                :
-    return "CRYPT_E_MSG_ERROR                ";
-    case CRYPT_E_UNKNOWN_ALGO             :
-    return "CRYPT_E_UNKNOWN_ALGO             ";
-    case CRYPT_E_OID_FORMAT               :
-    return "CRYPT_E_OID_FORMAT               ";
-    case CRYPT_E_INVALID_MSG_TYPE         :
-    return "CRYPT_E_INVALID_MSG_TYPE         ";
-    case CRYPT_E_UNEXPECTED_ENCODING      :
-    return "CRYPT_E_UNEXPECTED_ENCODING      ";
-    case CRYPT_E_AUTH_ATTR_MISSING        :
-    return "CRYPT_E_AUTH_ATTR_MISSING        ";
-    case CRYPT_E_HASH_VALUE               :
-    return "CRYPT_E_HASH_VALUE               ";
-    case CRYPT_E_INVALID_INDEX            :
-    return "CRYPT_E_INVALID_INDEX            ";
-    case CRYPT_E_ALREADY_DECRYPTED        :
-    return "CRYPT_E_ALREADY_DECRYPTED        ";
-    case CRYPT_E_NOT_DECRYPTED            :
-    return "CRYPT_E_NOT_DECRYPTED            ";
-    case CRYPT_E_RECIPIENT_NOT_FOUND      :
-    return "CRYPT_E_RECIPIENT_NOT_FOUND      ";
-    case CRYPT_E_CONTROL_TYPE             :
-    return "CRYPT_E_CONTROL_TYPE             ";
-    case CRYPT_E_ISSUER_SERIALNUMBER      :
-    return "CRYPT_E_ISSUER_SERIALNUMBER      ";
-    case CRYPT_E_SIGNER_NOT_FOUND         :
-    return "CRYPT_E_SIGNER_NOT_FOUND         ";
-    case CRYPT_E_ATTRIBUTES_MISSING       :
-    return "CRYPT_E_ATTRIBUTES_MISSING       ";
-    case CRYPT_E_STREAM_MSG_NOT_READY     :
-    return "CRYPT_E_STREAM_MSG_NOT_READY     ";
-    case CRYPT_E_STREAM_INSUFFICIENT_DATA :
-    return "CRYPT_E_STREAM_INSUFFICIENT_DATA ";
-    case CRYPT_E_BAD_LEN                  :
-    return "CRYPT_E_BAD_LEN                  ";
-    case CRYPT_E_BAD_ENCODE               :
-    return "CRYPT_E_BAD_ENCODE               ";
-    case CRYPT_E_FILE_ERROR               :
-    return "CRYPT_E_FILE_ERROR               ";
-    case CRYPT_E_NOT_FOUND                :
-    return "CRYPT_E_NOT_FOUND                ";
-    case CRYPT_E_EXISTS                   :
-    return "CRYPT_E_EXISTS                   ";
-    case CRYPT_E_NO_PROVIDER              :
-    return "CRYPT_E_NO_PROVIDER              ";
-    case CRYPT_E_SELF_SIGNED              :
-    return "CRYPT_E_SELF_SIGNED              ";
-    case CRYPT_E_DELETED_PREV             :
-    return "CRYPT_E_DELETED_PREV             ";
-    case CRYPT_E_NO_MATCH                 :
-    return "CRYPT_E_NO_MATCH                 ";
-    case CRYPT_E_UNEXPECTED_MSG_TYPE      :
-    return "CRYPT_E_UNEXPECTED_MSG_TYPE      ";
-    case CRYPT_E_NO_KEY_PROPERTY          :
-    return "CRYPT_E_NO_KEY_PROPERTY          ";
-    case CRYPT_E_NO_DECRYPT_CERT          :
-    return "CRYPT_E_NO_DECRYPT_CERT          ";
-    case CRYPT_E_BAD_MSG                  :
-    return "CRYPT_E_BAD_MSG                  ";
-    case CRYPT_E_NO_SIGNER                :
-    return "CRYPT_E_NO_SIGNER                ";
-    case CRYPT_E_PENDING_CLOSE            :
-    return "CRYPT_E_PENDING_CLOSE            ";
-    case CRYPT_E_REVOKED                  :
-    return "CRYPT_E_REVOKED                  ";
-    case CRYPT_E_NO_REVOCATION_DLL        :
-    return "CRYPT_E_NO_REVOCATION_DLL        ";
-    case CRYPT_E_NO_REVOCATION_CHECK      :
-    return "CRYPT_E_NO_REVOCATION_CHECK      ";
-    case CRYPT_E_REVOCATION_OFFLINE       :
-    return "CRYPT_E_REVOCATION_OFFLINE       ";
-    case CRYPT_E_NOT_IN_REVOCATION_DATABASE :
-    return "CRYPT_E_NOT_IN_REVOCATION_DATABASE ";
-    case CRYPT_E_INVALID_NUMERIC_STRING   :
-    return "CRYPT_E_INVALID_NUMERIC_STRING   ";
-    case CRYPT_E_INVALID_PRINTABLE_STRING :
-    return "CRYPT_E_INVALID_PRINTABLE_STRING ";
-    case CRYPT_E_INVALID_IA5_STRING       :
-    return "CRYPT_E_INVALID_IA5_STRING       ";
-    case CRYPT_E_INVALID_X500_STRING      :
-    return "CRYPT_E_INVALID_X500_STRING      ";
-    case CRYPT_E_NOT_CHAR_STRING          :
-    return "CRYPT_E_NOT_CHAR_STRING          ";
-    case CRYPT_E_FILERESIZED              :
-    return "CRYPT_E_FILERESIZED              ";
-    case CRYPT_E_SECURITY_SETTINGS        :
-    return "CRYPT_E_SECURITY_SETTINGS        ";
-    case CRYPT_E_NO_VERIFY_USAGE_DLL      :
-    return "CRYPT_E_NO_VERIFY_USAGE_DLL      ";
-    case CRYPT_E_NO_VERIFY_USAGE_CHECK    :
-    return "CRYPT_E_NO_VERIFY_USAGE_CHECK    ";
-    case CRYPT_E_VERIFY_USAGE_OFFLINE     :
-    return "CRYPT_E_VERIFY_USAGE_OFFLINE     ";
-    case CRYPT_E_NOT_IN_CTL               :
-    return "CRYPT_E_NOT_IN_CTL               ";
-    case CRYPT_E_NO_TRUSTED_SIGNER        :
-    return "CRYPT_E_NO_TRUSTED_SIGNER        ";
-    case CRYPT_E_OSS_ERROR                :
-    return "CRYPT_E_OSS_ERROR                ";
-    case CERTSRV_E_BAD_REQUESTSUBJECT     :
-    return "CERTSRV_E_BAD_REQUESTSUBJECT     ";
-    case CERTSRV_E_NO_REQUEST             :
-    return "CERTSRV_E_NO_REQUEST             ";
-    case CERTSRV_E_BAD_REQUESTSTATUS      :
-    return "CERTSRV_E_BAD_REQUESTSTATUS      ";
-    case CERTSRV_E_PROPERTY_EMPTY         :
-    return "CERTSRV_E_PROPERTY_EMPTY         ";
-    //case CERTDB_E_JET_ERROR               :
-    //return "CERTDB_E_JET_ERROR               ";
-    case TRUST_E_SYSTEM_ERROR             :
-    return "TRUST_E_SYSTEM_ERROR             ";
-    case TRUST_E_NO_SIGNER_CERT           :
-    return "TRUST_E_NO_SIGNER_CERT           ";
-    case TRUST_E_COUNTER_SIGNER           :
-    return "TRUST_E_COUNTER_SIGNER           ";
-    case TRUST_E_CERT_SIGNATURE           :
-    return "TRUST_E_CERT_SIGNATURE           ";
-    case TRUST_E_TIME_STAMP               :
-    return "TRUST_E_TIME_STAMP               ";
-    case TRUST_E_BAD_DIGEST               :
-    return "TRUST_E_BAD_DIGEST               ";
-    case TRUST_E_BASIC_CONSTRAINTS        :
-    return "TRUST_E_BASIC_CONSTRAINTS        ";
-    case TRUST_E_FINANCIAL_CRITERIA       :
-    return "TRUST_E_FINANCIAL_CRITERIA       ";
-    case TRUST_E_PROVIDER_UNKNOWN         :
-    return "TRUST_E_PROVIDER_UNKNOWN         ";
-    case TRUST_E_ACTION_UNKNOWN           :
-    return "TRUST_E_ACTION_UNKNOWN           ";
-    case TRUST_E_SUBJECT_FORM_UNKNOWN     :
-    return "TRUST_E_SUBJECT_FORM_UNKNOWN     ";
-    case TRUST_E_SUBJECT_NOT_TRUSTED      :
-    return "TRUST_E_SUBJECT_NOT_TRUSTED      ";
-    case DIGSIG_E_ENCODE                  :
-    return "DIGSIG_E_ENCODE                  ";
-    case DIGSIG_E_DECODE                  :
-    return "DIGSIG_E_DECODE                  ";
-    case DIGSIG_E_EXTENSIBILITY           :
-    return "DIGSIG_E_EXTENSIBILITY           ";
-    case DIGSIG_E_CRYPTO                  :
-    return "DIGSIG_E_CRYPTO                  ";
-    case PERSIST_E_SIZEDEFINITE           :
-    return "PERSIST_E_SIZEDEFINITE           ";
-    case PERSIST_E_SIZEINDEFINITE         :
-    return "PERSIST_E_SIZEINDEFINITE         ";
-    case PERSIST_E_NOTSELFSIZING          :
-    return "PERSIST_E_NOTSELFSIZING          ";
-    case TRUST_E_NOSIGNATURE              :
-    return "TRUST_E_NOSIGNATURE              ";
-    case CERT_E_EXPIRED                   :
-    return "CERT_E_EXPIRED                   ";
-    case CERT_E_VALIDITYPERIODNESTING     :
-    return "CERT_E_VALIDITYPERIODNESTING     ";
-    case CERT_E_ROLE                      :
-    return "CERT_E_ROLE                      ";
-    case CERT_E_PATHLENCONST              :
-    return "CERT_E_PATHLENCONST              ";
-    case CERT_E_CRITICAL                  :
-    return "CERT_E_CRITICAL                  ";
-    case CERT_E_PURPOSE                   :
-    return "CERT_E_PURPOSE                   ";
-    case CERT_E_ISSUERCHAINING            :
-    return "CERT_E_ISSUERCHAINING            ";
-    case CERT_E_MALFORMED                 :
-    return "CERT_E_MALFORMED                 ";
-    case CERT_E_UNTRUSTEDROOT             :
-    return "CERT_E_UNTRUSTEDROOT             ";
-    case CERT_E_CHAINING                  :
-    return "CERT_E_CHAINING                  ";
-    case TRUST_E_FAIL                     :
-    return "TRUST_E_FAIL                     ";
-    case CERT_E_REVOKED                   :
-    return "CERT_E_REVOKED                   ";
-    case CERT_E_UNTRUSTEDTESTROOT         :
-    return "CERT_E_UNTRUSTEDTESTROOT         ";
-    case CERT_E_REVOCATION_FAILURE        :
-    return "CERT_E_REVOCATION_FAILURE        ";
-    case CERT_E_CN_NO_MATCH               :
-    return "CERT_E_CN_NO_MATCH               ";
-    case CERT_E_WRONG_USAGE               :
-    return "CERT_E_WRONG_USAGE               ";
-    case SPAPI_E_EXPECTED_SECTION_NAME    :
-    return "SPAPI_E_EXPECTED_SECTION_NAME    ";
-    case SPAPI_E_BAD_SECTION_NAME_LINE    :
-    return "SPAPI_E_BAD_SECTION_NAME_LINE    ";
-    case SPAPI_E_SECTION_NAME_TOO_LONG    :
-    return "SPAPI_E_SECTION_NAME_TOO_LONG    ";
-    case SPAPI_E_GENERAL_SYNTAX           :
-    return "SPAPI_E_GENERAL_SYNTAX           ";
-    case SPAPI_E_WRONG_INF_STYLE          :
-    return "SPAPI_E_WRONG_INF_STYLE          ";
-    case SPAPI_E_SECTION_NOT_FOUND        :
-    return "SPAPI_E_SECTION_NOT_FOUND        ";
-    case SPAPI_E_LINE_NOT_FOUND           :
-    return "SPAPI_E_LINE_NOT_FOUND           ";
-    case SPAPI_E_NO_ASSOCIATED_CLASS      :
-    return "SPAPI_E_NO_ASSOCIATED_CLASS      ";
-    case SPAPI_E_CLASS_MISMATCH           :
-    return "SPAPI_E_CLASS_MISMATCH           ";
-    case SPAPI_E_DUPLICATE_FOUND          :
-    return "SPAPI_E_DUPLICATE_FOUND          ";
-    case SPAPI_E_NO_DRIVER_SELECTED       :
-    return "SPAPI_E_NO_DRIVER_SELECTED       ";
-    case SPAPI_E_KEY_DOES_NOT_EXIST       :
-    return "SPAPI_E_KEY_DOES_NOT_EXIST       ";
-    case SPAPI_E_INVALID_DEVINST_NAME     :
-    return "SPAPI_E_INVALID_DEVINST_NAME     ";
-    case SPAPI_E_INVALID_CLASS            :
-    return "SPAPI_E_INVALID_CLASS            ";
-    case SPAPI_E_DEVINST_ALREADY_EXISTS   :
-    return "SPAPI_E_DEVINST_ALREADY_EXISTS   ";
-    case SPAPI_E_DEVINFO_NOT_REGISTERED   :
-    return "SPAPI_E_DEVINFO_NOT_REGISTERED   ";
-    case SPAPI_E_INVALID_REG_PROPERTY     :
-    return "SPAPI_E_INVALID_REG_PROPERTY     ";
-    case SPAPI_E_NO_INF                   :
-    return "SPAPI_E_NO_INF                   ";
-    case SPAPI_E_NO_SUCH_DEVINST          :
-    return "SPAPI_E_NO_SUCH_DEVINST          ";
-    case SPAPI_E_CANT_LOAD_CLASS_ICON     :
-    return "SPAPI_E_CANT_LOAD_CLASS_ICON     ";
-    case SPAPI_E_INVALID_CLASS_INSTALLER  :
-    return "SPAPI_E_INVALID_CLASS_INSTALLER  ";
-    case SPAPI_E_DI_DO_DEFAULT            :
-    return "SPAPI_E_DI_DO_DEFAULT            ";
-    case SPAPI_E_DI_NOFILECOPY            :
-    return "SPAPI_E_DI_NOFILECOPY            ";
-    case SPAPI_E_INVALID_HWPROFILE        :
-    return "SPAPI_E_INVALID_HWPROFILE        ";
-    case SPAPI_E_NO_DEVICE_SELECTED       :
-    return "SPAPI_E_NO_DEVICE_SELECTED       ";
-    case SPAPI_E_DEVINFO_LIST_LOCKED      :
-    return "SPAPI_E_DEVINFO_LIST_LOCKED      ";
-    case SPAPI_E_DEVINFO_DATA_LOCKED      :
-    return "SPAPI_E_DEVINFO_DATA_LOCKED      ";
-    case SPAPI_E_DI_BAD_PATH              :
-    return "SPAPI_E_DI_BAD_PATH              ";
-    case SPAPI_E_NO_CLASSINSTALL_PARAMS   :
-    return "SPAPI_E_NO_CLASSINSTALL_PARAMS   ";
-    case SPAPI_E_FILEQUEUE_LOCKED         :
-    return "SPAPI_E_FILEQUEUE_LOCKED         ";
-    case SPAPI_E_BAD_SERVICE_INSTALLSECT  :
-    return "SPAPI_E_BAD_SERVICE_INSTALLSECT  ";
-    case SPAPI_E_NO_CLASS_DRIVER_LIST     :
-    return "SPAPI_E_NO_CLASS_DRIVER_LIST     ";
-    case SPAPI_E_NO_ASSOCIATED_SERVICE    :
-    return "SPAPI_E_NO_ASSOCIATED_SERVICE    ";
-    case SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE :
-    return "SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE ";
-    case SPAPI_E_DEVICE_INTERFACE_ACTIVE  :
-    return "SPAPI_E_DEVICE_INTERFACE_ACTIVE  ";
-    case SPAPI_E_DEVICE_INTERFACE_REMOVED :
-    return "SPAPI_E_DEVICE_INTERFACE_REMOVED ";
-    case SPAPI_E_BAD_INTERFACE_INSTALLSECT :
-    return "SPAPI_E_BAD_INTERFACE_INSTALLSECT ";
-    case SPAPI_E_NO_SUCH_INTERFACE_CLASS  :
-    return "SPAPI_E_NO_SUCH_INTERFACE_CLASS  ";
-    case SPAPI_E_INVALID_REFERENCE_STRING :
-    return "SPAPI_E_INVALID_REFERENCE_STRING ";
-    case SPAPI_E_INVALID_MACHINENAME      :
-    return "SPAPI_E_INVALID_MACHINENAME      ";
-    case SPAPI_E_REMOTE_COMM_FAILURE      :
-    return "SPAPI_E_REMOTE_COMM_FAILURE      ";
-    case SPAPI_E_MACHINE_UNAVAILABLE      :
-    return "SPAPI_E_MACHINE_UNAVAILABLE      ";
-    case SPAPI_E_NO_CONFIGMGR_SERVICES    :
-    return "SPAPI_E_NO_CONFIGMGR_SERVICES    ";
-    case SPAPI_E_INVALID_PROPPAGE_PROVIDER :
-    return "SPAPI_E_INVALID_PROPPAGE_PROVIDER ";
-    case SPAPI_E_NO_SUCH_DEVICE_INTERFACE :
-    return "SPAPI_E_NO_SUCH_DEVICE_INTERFACE ";
-    case SPAPI_E_DI_POSTPROCESSING_REQUIRED :
-    return "SPAPI_E_DI_POSTPROCESSING_REQUIRED ";
-    case SPAPI_E_INVALID_COINSTALLER      :
-    return "SPAPI_E_INVALID_COINSTALLER      ";
-    case SPAPI_E_NO_COMPAT_DRIVERS        :
-    return "SPAPI_E_NO_COMPAT_DRIVERS        ";
-    case SPAPI_E_NO_DEVICE_ICON           :
-    return "SPAPI_E_NO_DEVICE_ICON           ";
-    case SPAPI_E_INVALID_INF_LOGCONFIG    :
-    return "SPAPI_E_INVALID_INF_LOGCONFIG    ";
-    case SPAPI_E_DI_DONT_INSTALL          :
-    return "SPAPI_E_DI_DONT_INSTALL          ";
-    case SPAPI_E_INVALID_FILTER_DRIVER    :
-    return "SPAPI_E_INVALID_FILTER_DRIVER    ";
-    case SPAPI_E_ERROR_NOT_INSTALLED      :
-    return "SPAPI_E_ERROR_NOT_INSTALLED      ";
-
+		case E_ACCESSDENIED                   :
+			return "E_ACCESSDENIED                   ";
+		case E_PENDING                        :
+			return "E_PENDING                        ";
+		case CO_E_INIT_TLS                    :
+			return "CO_E_INIT_TLS                    ";
+		case CO_E_INIT_SHARED_ALLOCATOR       :
+			return "CO_E_INIT_SHARED_ALLOCATOR       ";
+		case CO_E_INIT_MEMORY_ALLOCATOR       :
+			return "CO_E_INIT_MEMORY_ALLOCATOR       ";
+		case CO_E_INIT_CLASS_CACHE            :
+			return "CO_E_INIT_CLASS_CACHE            ";
+		case CO_E_INIT_RPC_CHANNEL            :
+			return "CO_E_INIT_RPC_CHANNEL            ";
+		case CO_E_INIT_TLS_SET_CHANNEL_CONTROL :
+			return "CO_E_INIT_TLS_SET_CHANNEL_CONTROL ";
+		case CO_E_INIT_TLS_CHANNEL_CONTROL    :
+			return "CO_E_INIT_TLS_CHANNEL_CONTROL    ";
+		case CO_E_INIT_UNACCEPTED_USER_ALLOCATOR :
+			return "CO_E_INIT_UNACCEPTED_USER_ALLOCATOR ";
+		case CO_E_INIT_SCM_MUTEX_EXISTS       :
+			return "CO_E_INIT_SCM_MUTEX_EXISTS       ";
+		case CO_E_INIT_SCM_FILE_MAPPING_EXISTS :
+			return "CO_E_INIT_SCM_FILE_MAPPING_EXISTS ";
+		case CO_E_INIT_SCM_MAP_VIEW_OF_FILE   :
+			return "CO_E_INIT_SCM_MAP_VIEW_OF_FILE   ";
+		case CO_E_INIT_SCM_EXEC_FAILURE       :
+			return "CO_E_INIT_SCM_EXEC_FAILURE       ";
+		case CO_E_INIT_ONLY_SINGLE_THREADED   :
+			return "CO_E_INIT_ONLY_SINGLE_THREADED   ";
+		case CO_E_CANT_REMOTE                 :
+			return "CO_E_CANT_REMOTE                 ";
+		case CO_E_BAD_SERVER_NAME             :
+			return "CO_E_BAD_SERVER_NAME             ";
+		case CO_E_WRONG_SERVER_IDENTITY       :
+			return "CO_E_WRONG_SERVER_IDENTITY       ";
+		case CO_E_OLE1DDE_DISABLED            :
+			return "CO_E_OLE1DDE_DISABLED            ";
+		case CO_E_RUNAS_SYNTAX                :
+			return "CO_E_RUNAS_SYNTAX                ";
+		case CO_E_CREATEPROCESS_FAILURE       :
+			return "CO_E_CREATEPROCESS_FAILURE       ";
+		case CO_E_RUNAS_CREATEPROCESS_FAILURE :
+			return "CO_E_RUNAS_CREATEPROCESS_FAILURE ";
+		case CO_E_RUNAS_LOGON_FAILURE         :
+			return "CO_E_RUNAS_LOGON_FAILURE         ";
+		case CO_E_LAUNCH_PERMSSION_DENIED     :
+			return "CO_E_LAUNCH_PERMSSION_DENIED     ";
+		case CO_E_START_SERVICE_FAILURE       :
+			return "CO_E_START_SERVICE_FAILURE       ";
+		case CO_E_REMOTE_COMMUNICATION_FAILURE :
+			return "CO_E_REMOTE_COMMUNICATION_FAILURE ";
+		case CO_E_SERVER_START_TIMEOUT        :
+			return "CO_E_SERVER_START_TIMEOUT        ";
+		case CO_E_CLSREG_INCONSISTENT         :
+			return "CO_E_CLSREG_INCONSISTENT         ";
+		case CO_E_IIDREG_INCONSISTENT         :
+			return "CO_E_IIDREG_INCONSISTENT         ";
+		case CO_E_NOT_SUPPORTED               :
+			return "CO_E_NOT_SUPPORTED               ";
+		case CO_E_RELOAD_DLL                  :
+			return "CO_E_RELOAD_DLL                  ";
+		case CO_E_MSI_ERROR                   :
+			return "CO_E_MSI_ERROR                   ";
+		case OLE_E_OLEVERB                    :
+			return "OLE_E_OLEVERB                    ";
+		case OLE_E_ADVF                       :
+			return "OLE_E_ADVF                       ";
+		case OLE_E_ENUM_NOMORE                :
+			return "OLE_E_ENUM_NOMORE                ";
+		case OLE_E_ADVISENOTSUPPORTED         :
+			return "OLE_E_ADVISENOTSUPPORTED         ";
+		case OLE_E_NOCONNECTION               :
+			return "OLE_E_NOCONNECTION               ";
+		case OLE_E_NOTRUNNING                 :
+			return "OLE_E_NOTRUNNING                 ";
+		case OLE_E_NOCACHE                    :
+			return "OLE_E_NOCACHE                    ";
+		case OLE_E_BLANK                      :
+			return "OLE_E_BLANK                      ";
+		case OLE_E_CLASSDIFF                  :
+			return "OLE_E_CLASSDIFF                  ";
+		case OLE_E_CANT_GETMONIKER            :
+			return "OLE_E_CANT_GETMONIKER            ";
+		case OLE_E_CANT_BINDTOSOURCE          :
+			return "OLE_E_CANT_BINDTOSOURCE          ";
+		case OLE_E_STATIC                     :
+			return "OLE_E_STATIC                     ";
+		case OLE_E_PROMPTSAVECANCELLED        :
+			return "OLE_E_PROMPTSAVECANCELLED        ";
+		case OLE_E_INVALIDRECT                :
+			return "OLE_E_INVALIDRECT                ";
+		case OLE_E_WRONGCOMPOBJ               :
+			return "OLE_E_WRONGCOMPOBJ               ";
+		case OLE_E_INVALIDHWND                :
+			return "OLE_E_INVALIDHWND                ";
+		case OLE_E_NOT_INPLACEACTIVE          :
+			return "OLE_E_NOT_INPLACEACTIVE          ";
+		case OLE_E_CANTCONVERT                :
+			return "OLE_E_CANTCONVERT                ";
+		case OLE_E_NOSTORAGE                  :
+			return "OLE_E_NOSTORAGE                  ";
+		case DV_E_FORMATETC                   :
+			return "DV_E_FORMATETC                   ";
+		case DV_E_DVTARGETDEVICE              :
+			return "DV_E_DVTARGETDEVICE              ";
+		case DV_E_STGMEDIUM                   :
+			return "DV_E_STGMEDIUM                   ";
+		case DV_E_STATDATA                    :
+			return "DV_E_STATDATA                    ";
+		case DV_E_LINDEX                      :
+			return "DV_E_LINDEX                      ";
+		case DV_E_TYMED                       :
+			return "DV_E_TYMED                       ";
+		case DV_E_CLIPFORMAT                  :
+			return "DV_E_CLIPFORMAT                  ";
+		case DV_E_DVASPECT                    :
+			return "DV_E_DVASPECT                    ";
+		case DV_E_DVTARGETDEVICE_SIZE         :
+			return "DV_E_DVTARGETDEVICE_SIZE         ";
+		case DV_E_NOIVIEWOBJECT               :
+			return "DV_E_NOIVIEWOBJECT               ";
+		case DRAGDROP_E_NOTREGISTERED         :
+			return "DRAGDROP_E_NOTREGISTERED         ";
+		case DRAGDROP_E_ALREADYREGISTERED     :
+			return "DRAGDROP_E_ALREADYREGISTERED     ";
+		case DRAGDROP_E_INVALIDHWND           :
+			return "DRAGDROP_E_INVALIDHWND           ";
+		case CLASS_E_NOAGGREGATION            :
+			return "CLASS_E_NOAGGREGATION            ";
+		case CLASS_E_CLASSNOTAVAILABLE        :
+			return "CLASS_E_CLASSNOTAVAILABLE        ";
+		case CLASS_E_NOTLICENSED              :
+			return "CLASS_E_NOTLICENSED              ";
+		case VIEW_E_DRAW                      :
+			return "VIEW_E_DRAW                      ";
+		case REGDB_E_READREGDB                :
+			return "REGDB_E_READREGDB                ";
+		case REGDB_E_WRITEREGDB               :
+			return "REGDB_E_WRITEREGDB               ";
+		case REGDB_E_KEYMISSING               :
+			return "REGDB_E_KEYMISSING               ";
+		case REGDB_E_INVALIDVALUE             :
+			return "REGDB_E_INVALIDVALUE             ";
+		case REGDB_E_CLASSNOTREG              :
+			return "REGDB_E_CLASSNOTREG              ";
+		case REGDB_E_IIDNOTREG                :
+			return "REGDB_E_IIDNOTREG                ";
+		case CAT_E_CATIDNOEXIST               :
+			return "CAT_E_CATIDNOEXIST               ";
+		case CAT_E_NODESCRIPTION              :
+			return "CAT_E_NODESCRIPTION              ";
+		case CS_E_PACKAGE_NOTFOUND            :
+			return "CS_E_PACKAGE_NOTFOUND            ";
+		case CS_E_NOT_DELETABLE               :
+			return "CS_E_NOT_DELETABLE               ";
+		case CS_E_CLASS_NOTFOUND              :
+			return "CS_E_CLASS_NOTFOUND              ";
+		case CS_E_INVALID_VERSION             :
+			return "CS_E_INVALID_VERSION             ";
+		case CS_E_NO_CLASSSTORE               :
+			return "CS_E_NO_CLASSSTORE               ";
+		case CACHE_E_NOCACHE_UPDATED          :
+			return "CACHE_E_NOCACHE_UPDATED          ";
+		case OLEOBJ_E_NOVERBS                 :
+			return "OLEOBJ_E_NOVERBS                 ";
+		case OLEOBJ_E_INVALIDVERB             :
+			return "OLEOBJ_E_INVALIDVERB             ";
+		case INPLACE_E_NOTUNDOABLE            :
+			return "INPLACE_E_NOTUNDOABLE            ";
+		case INPLACE_E_NOTOOLSPACE            :
+			return "INPLACE_E_NOTOOLSPACE            ";
+		case CONVERT10_E_OLESTREAM_GET        :
+			return "CONVERT10_E_OLESTREAM_GET        ";
+		case CONVERT10_E_OLESTREAM_PUT        :
+			return "CONVERT10_E_OLESTREAM_PUT        ";
+		case CONVERT10_E_OLESTREAM_FMT        :
+			return "CONVERT10_E_OLESTREAM_FMT        ";
+		case CONVERT10_E_OLESTREAM_BITMAP_TO_DIB :
+			return "CONVERT10_E_OLESTREAM_BITMAP_TO_DIB ";
+		case CONVERT10_E_STG_FMT              :
+			return "CONVERT10_E_STG_FMT              ";
+		case CONVERT10_E_STG_NO_STD_STREAM    :
+			return "CONVERT10_E_STG_NO_STD_STREAM    ";
+		case CONVERT10_E_STG_DIB_TO_BITMAP    :
+			return "CONVERT10_E_STG_DIB_TO_BITMAP    ";
+		case CLIPBRD_E_CANT_OPEN              :
+			return "CLIPBRD_E_CANT_OPEN              ";
+		case CLIPBRD_E_CANT_EMPTY             :
+			return "CLIPBRD_E_CANT_EMPTY             ";
+		case CLIPBRD_E_CANT_SET               :
+			return "CLIPBRD_E_CANT_SET               ";
+		case CLIPBRD_E_BAD_DATA               :
+			return "CLIPBRD_E_BAD_DATA               ";
+		case CLIPBRD_E_CANT_CLOSE             :
+			return "CLIPBRD_E_CANT_CLOSE             ";
+		case MK_E_CONNECTMANUALLY             :
+			return "MK_E_CONNECTMANUALLY             ";
+		case MK_E_EXCEEDEDDEADLINE            :
+			return "MK_E_EXCEEDEDDEADLINE            ";
+		case MK_E_NEEDGENERIC                 :
+			return "MK_E_NEEDGENERIC                 ";
+		case MK_E_UNAVAILABLE                 :
+			return "MK_E_UNAVAILABLE                 ";
+		case MK_E_SYNTAX                      :
+			return "MK_E_SYNTAX                      ";
+		case MK_E_NOOBJECT                    :
+			return "MK_E_NOOBJECT                    ";
+		case MK_E_INVALIDEXTENSION            :
+			return "MK_E_INVALIDEXTENSION            ";
+		case MK_E_INTERMEDIATEINTERFACENOTSUPPORTED :
+			return "MK_E_INTERMEDIATEINTERFACENOTSUPPORTED ";
+		case MK_E_NOTBINDABLE                 :
+			return "MK_E_NOTBINDABLE                 ";
+		case MK_E_NOTBOUND                    :
+			return "MK_E_NOTBOUND                    ";
+		case MK_E_CANTOPENFILE                :
+			return "MK_E_CANTOPENFILE                ";
+		case MK_E_MUSTBOTHERUSER              :
+			return "MK_E_MUSTBOTHERUSER              ";
+		case MK_E_NOINVERSE                   :
+			return "MK_E_NOINVERSE                   ";
+		case MK_E_NOSTORAGE                   :
+			return "MK_E_NOSTORAGE                   ";
+		case MK_E_NOPREFIX                    :
+			return "MK_E_NOPREFIX                    ";
+		case MK_E_ENUMERATION_FAILED          :
+			return "MK_E_ENUMERATION_FAILED          ";
+		case CO_E_NOTINITIALIZED              :
+			return "CO_E_NOTINITIALIZED              ";
+		case CO_E_ALREADYINITIALIZED          :
+			return "CO_E_ALREADYINITIALIZED          ";
+		case CO_E_CANTDETERMINECLASS          :
+			return "CO_E_CANTDETERMINECLASS          ";
+		case CO_E_CLASSSTRING                 :
+			return "CO_E_CLASSSTRING                 ";
+		case CO_E_IIDSTRING                   :
+			return "CO_E_IIDSTRING                   ";
+		case CO_E_APPNOTFOUND                 :
+			return "CO_E_APPNOTFOUND                 ";
+		case CO_E_APPSINGLEUSE                :
+			return "CO_E_APPSINGLEUSE                ";
+		case CO_E_ERRORINAPP                  :
+			return "CO_E_ERRORINAPP                  ";
+		case CO_E_DLLNOTFOUND                 :
+			return "CO_E_DLLNOTFOUND                 ";
+		case CO_E_ERRORINDLL                  :
+			return "CO_E_ERRORINDLL                  ";
+		case CO_E_WRONGOSFORAPP               :
+			return "CO_E_WRONGOSFORAPP               ";
+		case CO_E_OBJNOTREG                   :
+			return "CO_E_OBJNOTREG                   ";
+		case CO_E_OBJISREG                    :
+			return "CO_E_OBJISREG                    ";
+		case CO_E_OBJNOTCONNECTED             :
+			return "CO_E_OBJNOTCONNECTED             ";
+		case CO_E_APPDIDNTREG                 :
+			return "CO_E_APPDIDNTREG                 ";
+		case CO_E_RELEASED                    :
+			return "CO_E_RELEASED                    ";
+		case CO_E_FAILEDTOIMPERSONATE         :
+			return "CO_E_FAILEDTOIMPERSONATE         ";
+		case CO_E_FAILEDTOGETSECCTX           :
+			return "CO_E_FAILEDTOGETSECCTX           ";
+		case CO_E_FAILEDTOOPENTHREADTOKEN     :
+			return "CO_E_FAILEDTOOPENTHREADTOKEN     ";
+		case CO_E_FAILEDTOGETTOKENINFO        :
+			return "CO_E_FAILEDTOGETTOKENINFO        ";
+		case CO_E_TRUSTEEDOESNTMATCHCLIENT    :
+			return "CO_E_TRUSTEEDOESNTMATCHCLIENT    ";
+		case CO_E_FAILEDTOQUERYCLIENTBLANKET  :
+			return "CO_E_FAILEDTOQUERYCLIENTBLANKET  ";
+		case CO_E_FAILEDTOSETDACL             :
+			return "CO_E_FAILEDTOSETDACL             ";
+		case CO_E_ACCESSCHECKFAILED           :
+			return "CO_E_ACCESSCHECKFAILED           ";
+		case CO_E_NETACCESSAPIFAILED          :
+			return "CO_E_NETACCESSAPIFAILED          ";
+		case CO_E_WRONGTRUSTEENAMESYNTAX      :
+			return "CO_E_WRONGTRUSTEENAMESYNTAX      ";
+		case CO_E_INVALIDSID                  :
+			return "CO_E_INVALIDSID                  ";
+		case CO_E_CONVERSIONFAILED            :
+			return "CO_E_CONVERSIONFAILED            ";
+		case CO_E_NOMATCHINGSIDFOUND          :
+			return "CO_E_NOMATCHINGSIDFOUND          ";
+		case CO_E_LOOKUPACCSIDFAILED          :
+			return "CO_E_LOOKUPACCSIDFAILED          ";
+		case CO_E_NOMATCHINGNAMEFOUND         :
+			return "CO_E_NOMATCHINGNAMEFOUND         ";
+		case CO_E_LOOKUPACCNAMEFAILED         :
+			return "CO_E_LOOKUPACCNAMEFAILED         ";
+		case CO_E_SETSERLHNDLFAILED           :
+			return "CO_E_SETSERLHNDLFAILED           ";
+		case CO_E_FAILEDTOGETWINDIR           :
+			return "CO_E_FAILEDTOGETWINDIR           ";
+		case CO_E_PATHTOOLONG                 :
+			return "CO_E_PATHTOOLONG                 ";
+		case CO_E_FAILEDTOGENUUID             :
+			return "CO_E_FAILEDTOGENUUID             ";
+		case CO_E_FAILEDTOCREATEFILE          :
+			return "CO_E_FAILEDTOCREATEFILE          ";
+		case CO_E_FAILEDTOCLOSEHANDLE         :
+			return "CO_E_FAILEDTOCLOSEHANDLE         ";
+		case CO_E_EXCEEDSYSACLLIMIT           :
+			return "CO_E_EXCEEDSYSACLLIMIT           ";
+		case CO_E_ACESINWRONGORDER            :
+			return "CO_E_ACESINWRONGORDER            ";
+		case CO_E_INCOMPATIBLESTREAMVERSION   :
+			return "CO_E_INCOMPATIBLESTREAMVERSION   ";
+		case CO_E_FAILEDTOOPENPROCESSTOKEN    :
+			return "CO_E_FAILEDTOOPENPROCESSTOKEN    ";
+		case CO_E_DECODEFAILED                :
+			return "CO_E_DECODEFAILED                ";
+		case CO_E_ACNOTINITIALIZED            :
+			return "CO_E_ACNOTINITIALIZED            ";
+		case OLE_S_USEREG                     :
+			return "OLE_S_USEREG                     ";
+		case OLE_S_STATIC                     :
+			return "OLE_S_STATIC                     ";
+		case OLE_S_MAC_CLIPFORMAT             :
+			return "OLE_S_MAC_CLIPFORMAT             ";
+		case DRAGDROP_S_DROP                  :
+			return "DRAGDROP_S_DROP                  ";
+		case DRAGDROP_S_CANCEL                :
+			return "DRAGDROP_S_CANCEL                ";
+		case DRAGDROP_S_USEDEFAULTCURSORS     :
+			return "DRAGDROP_S_USEDEFAULTCURSORS     ";
+		case DATA_S_SAMEFORMATETC             :
+			return "DATA_S_SAMEFORMATETC             ";
+		case VIEW_S_ALREADY_FROZEN            :
+			return "VIEW_S_ALREADY_FROZEN            ";
+		case CACHE_S_FORMATETC_NOTSUPPORTED   :
+			return "CACHE_S_FORMATETC_NOTSUPPORTED   ";
+		case CACHE_S_SAMECACHE                :
+			return "CACHE_S_SAMECACHE                ";
+		case CACHE_S_SOMECACHES_NOTUPDATED    :
+			return "CACHE_S_SOMECACHES_NOTUPDATED    ";
+		case OLEOBJ_S_INVALIDVERB             :
+			return "OLEOBJ_S_INVALIDVERB             ";
+		case OLEOBJ_S_CANNOT_DOVERB_NOW       :
+			return "OLEOBJ_S_CANNOT_DOVERB_NOW       ";
+		case OLEOBJ_S_INVALIDHWND             :
+			return "OLEOBJ_S_INVALIDHWND             ";
+		case INPLACE_S_TRUNCATED              :
+			return "INPLACE_S_TRUNCATED              ";
+		case CONVERT10_S_NO_PRESENTATION      :
+			return "CONVERT10_S_NO_PRESENTATION      ";
+		case MK_S_REDUCED_TO_SELF             :
+			return "MK_S_REDUCED_TO_SELF             ";
+		case MK_S_ME                          :
+			return "MK_S_ME                          ";
+		case MK_S_HIM                         :
+			return "MK_S_HIM                         ";
+		case MK_S_US                          :
+			return "MK_S_US                          ";
+		case MK_S_MONIKERALREADYREGISTERED    :
+			return "MK_S_MONIKERALREADYREGISTERED    ";
+		case CO_E_CLASS_CREATE_FAILED         :
+			return "CO_E_CLASS_CREATE_FAILED         ";
+		case CO_E_SCM_ERROR                   :
+			return "CO_E_SCM_ERROR                   ";
+		case CO_E_SCM_RPC_FAILURE             :
+			return "CO_E_SCM_RPC_FAILURE             ";
+		case CO_E_BAD_PATH                    :
+			return "CO_E_BAD_PATH                    ";
+		case CO_E_SERVER_EXEC_FAILURE         :
+			return "CO_E_SERVER_EXEC_FAILURE         ";
+		case CO_E_OBJSRV_RPC_FAILURE          :
+			return "CO_E_OBJSRV_RPC_FAILURE          ";
+		case MK_E_NO_NORMALIZED               :
+			return "MK_E_NO_NORMALIZED               ";
+		case CO_E_SERVER_STOPPING             :
+			return "CO_E_SERVER_STOPPING             ";
+		case MEM_E_INVALID_ROOT               :
+			return "MEM_E_INVALID_ROOT               ";
+		case MEM_E_INVALID_LINK               :
+			return "MEM_E_INVALID_LINK               ";
+		case MEM_E_INVALID_SIZE               :
+			return "MEM_E_INVALID_SIZE               ";
+		case CO_S_NOTALLINTERFACES            :
+			return "CO_S_NOTALLINTERFACES            ";
+		case DISP_E_UNKNOWNINTERFACE          :
+			return "DISP_E_UNKNOWNINTERFACE          ";
+		case DISP_E_MEMBERNOTFOUND            :
+			return "DISP_E_MEMBERNOTFOUND            ";
+		case DISP_E_PARAMNOTFOUND             :
+			return "DISP_E_PARAMNOTFOUND             ";
+		case DISP_E_TYPEMISMATCH              :
+			return "DISP_E_TYPEMISMATCH              ";
+		case DISP_E_UNKNOWNNAME               :
+			return "DISP_E_UNKNOWNNAME               ";
+		case DISP_E_NONAMEDARGS               :
+			return "DISP_E_NONAMEDARGS               ";
+		case DISP_E_BADVARTYPE                :
+			return "DISP_E_BADVARTYPE                ";
+		case DISP_E_EXCEPTION                 :
+			return "DISP_E_EXCEPTION                 ";
+		case DISP_E_OVERFLOW                  :
+			return "DISP_E_OVERFLOW                  ";
+		case DISP_E_BADINDEX                  :
+			return "DISP_E_BADINDEX                  ";
+		case DISP_E_UNKNOWNLCID               :
+			return "DISP_E_UNKNOWNLCID               ";
+		case DISP_E_ARRAYISLOCKED             :
+			return "DISP_E_ARRAYISLOCKED             ";
+		case DISP_E_BADPARAMCOUNT             :
+			return "DISP_E_BADPARAMCOUNT             ";
+		case DISP_E_PARAMNOTOPTIONAL          :
+			return "DISP_E_PARAMNOTOPTIONAL          ";
+		case DISP_E_BADCALLEE                 :
+			return "DISP_E_BADCALLEE                 ";
+		case DISP_E_NOTACOLLECTION            :
+			return "DISP_E_NOTACOLLECTION            ";
+		case DISP_E_DIVBYZERO                 :
+			return "DISP_E_DIVBYZERO                 ";
+		case TYPE_E_BUFFERTOOSMALL            :
+			return "TYPE_E_BUFFERTOOSMALL            ";
+		case TYPE_E_FIELDNOTFOUND             :
+			return "TYPE_E_FIELDNOTFOUND             ";
+		case TYPE_E_INVDATAREAD               :
+			return "TYPE_E_INVDATAREAD               ";
+		case TYPE_E_UNSUPFORMAT               :
+			return "TYPE_E_UNSUPFORMAT               ";
+		case TYPE_E_REGISTRYACCESS            :
+			return "TYPE_E_REGISTRYACCESS            ";
+		case TYPE_E_LIBNOTREGISTERED          :
+			return "TYPE_E_LIBNOTREGISTERED          ";
+		case TYPE_E_UNDEFINEDTYPE             :
+			return "TYPE_E_UNDEFINEDTYPE             ";
+		case TYPE_E_QUALIFIEDNAMEDISALLOWED   :
+			return "TYPE_E_QUALIFIEDNAMEDISALLOWED   ";
+		case TYPE_E_INVALIDSTATE              :
+			return "TYPE_E_INVALIDSTATE              ";
+		case TYPE_E_WRONGTYPEKIND             :
+			return "TYPE_E_WRONGTYPEKIND             ";
+		case TYPE_E_ELEMENTNOTFOUND           :
+			return "TYPE_E_ELEMENTNOTFOUND           ";
+		case TYPE_E_AMBIGUOUSNAME             :
+			return "TYPE_E_AMBIGUOUSNAME             ";
+		case TYPE_E_NAMECONFLICT              :
+			return "TYPE_E_NAMECONFLICT              ";
+		case TYPE_E_UNKNOWNLCID               :
+			return "TYPE_E_UNKNOWNLCID               ";
+		case TYPE_E_DLLFUNCTIONNOTFOUND       :
+			return "TYPE_E_DLLFUNCTIONNOTFOUND       ";
+		case TYPE_E_BADMODULEKIND             :
+			return "TYPE_E_BADMODULEKIND             ";
+		case TYPE_E_SIZETOOBIG                :
+			return "TYPE_E_SIZETOOBIG                ";
+		case TYPE_E_DUPLICATEID               :
+			return "TYPE_E_DUPLICATEID               ";
+		case TYPE_E_INVALIDID                 :
+			return "TYPE_E_INVALIDID                 ";
+		case TYPE_E_TYPEMISMATCH              :
+			return "TYPE_E_TYPEMISMATCH              ";
+		case TYPE_E_OUTOFBOUNDS               :
+			return "TYPE_E_OUTOFBOUNDS               ";
+		case TYPE_E_IOERROR                   :
+			return "TYPE_E_IOERROR                   ";
+		case TYPE_E_CANTCREATETMPFILE         :
+			return "TYPE_E_CANTCREATETMPFILE         ";
+		case TYPE_E_CANTLOADLIBRARY           :
+			return "TYPE_E_CANTLOADLIBRARY           ";
+		case TYPE_E_INCONSISTENTPROPFUNCS     :
+			return "TYPE_E_INCONSISTENTPROPFUNCS     ";
+		case TYPE_E_CIRCULARTYPE              :
+			return "TYPE_E_CIRCULARTYPE              ";
+		case STG_E_INVALIDFUNCTION            :
+			return "STG_E_INVALIDFUNCTION            ";
+		case STG_E_FILENOTFOUND               :
+			return "STG_E_FILENOTFOUND               ";
+		case STG_E_PATHNOTFOUND               :
+			return "STG_E_PATHNOTFOUND               ";
+		case STG_E_TOOMANYOPENFILES           :
+			return "STG_E_TOOMANYOPENFILES           ";
+		case STG_E_ACCESSDENIED               :
+			return "STG_E_ACCESSDENIED               ";
+		case STG_E_INVALIDHANDLE              :
+			return "STG_E_INVALIDHANDLE              ";
+		case STG_E_INSUFFICIENTMEMORY         :
+			return "STG_E_INSUFFICIENTMEMORY         ";
+		case STG_E_INVALIDPOINTER             :
+			return "STG_E_INVALIDPOINTER             ";
+		case STG_E_NOMOREFILES                :
+			return "STG_E_NOMOREFILES                ";
+		case STG_E_DISKISWRITEPROTECTED       :
+			return "STG_E_DISKISWRITEPROTECTED       ";
+		case STG_E_SEEKERROR                  :
+			return "STG_E_SEEKERROR                  ";
+		case STG_E_WRITEFAULT                 :
+			return "STG_E_WRITEFAULT                 ";
+		case STG_E_READFAULT                  :
+			return "STG_E_READFAULT                  ";
+		case STG_E_SHAREVIOLATION             :
+			return "STG_E_SHAREVIOLATION             ";
+		case STG_E_LOCKVIOLATION              :
+			return "STG_E_LOCKVIOLATION              ";
+		case STG_E_FILEALREADYEXISTS          :
+			return "STG_E_FILEALREADYEXISTS          ";
+		case STG_E_INVALIDPARAMETER           :
+			return "STG_E_INVALIDPARAMETER           ";
+		case STG_E_MEDIUMFULL                 :
+			return "STG_E_MEDIUMFULL                 ";
+		case STG_E_PROPSETMISMATCHED          :
+			return "STG_E_PROPSETMISMATCHED          ";
+		case STG_E_ABNORMALAPIEXIT            :
+			return "STG_E_ABNORMALAPIEXIT            ";
+		case STG_E_INVALIDHEADER              :
+			return "STG_E_INVALIDHEADER              ";
+		case STG_E_INVALIDNAME                :
+			return "STG_E_INVALIDNAME                ";
+		case STG_E_UNKNOWN                    :
+			return "STG_E_UNKNOWN                    ";
+		case STG_E_UNIMPLEMENTEDFUNCTION      :
+			return "STG_E_UNIMPLEMENTEDFUNCTION      ";
+		case STG_E_INVALIDFLAG                :
+			return "STG_E_INVALIDFLAG                ";
+		case STG_E_INUSE                      :
+			return "STG_E_INUSE                      ";
+		case STG_E_NOTCURRENT                 :
+			return "STG_E_NOTCURRENT                 ";
+		case STG_E_REVERTED                   :
+			return "STG_E_REVERTED                   ";
+		case STG_E_CANTSAVE                   :
+			return "STG_E_CANTSAVE                   ";
+		case STG_E_OLDFORMAT                  :
+			return "STG_E_OLDFORMAT                  ";
+		case STG_E_OLDDLL                     :
+			return "STG_E_OLDDLL                     ";
+		case STG_E_SHAREREQUIRED              :
+			return "STG_E_SHAREREQUIRED              ";
+		case STG_E_NOTFILEBASEDSTORAGE        :
+			return "STG_E_NOTFILEBASEDSTORAGE        ";
+		case STG_E_EXTANTMARSHALLINGS         :
+			return "STG_E_EXTANTMARSHALLINGS         ";
+		case STG_E_DOCFILECORRUPT             :
+			return "STG_E_DOCFILECORRUPT             ";
+		case STG_E_BADBASEADDRESS             :
+			return "STG_E_BADBASEADDRESS             ";
+		case STG_E_INCOMPLETE                 :
+			return "STG_E_INCOMPLETE                 ";
+		case STG_E_TERMINATED                 :
+			return "STG_E_TERMINATED                 ";
+		case STG_S_CONVERTED                  :
+			return "STG_S_CONVERTED                  ";
+		case STG_S_BLOCK                      :
+			return "STG_S_BLOCK                      ";
+		case STG_S_RETRYNOW                   :
+			return "STG_S_RETRYNOW                   ";
+		case STG_S_MONITORING                 :
+			return "STG_S_MONITORING                 ";
+		case STG_S_MULTIPLEOPENS              :
+			return "STG_S_MULTIPLEOPENS              ";
+		case STG_S_CONSOLIDATIONFAILED        :
+			return "STG_S_CONSOLIDATIONFAILED        ";
+		case STG_S_CANNOTCONSOLIDATE          :
+			return "STG_S_CANNOTCONSOLIDATE          ";
+		case RPC_E_CALL_REJECTED              :
+			return "RPC_E_CALL_REJECTED              ";
+		case RPC_E_CALL_CANCELED              :
+			return "RPC_E_CALL_CANCELED              ";
+		case RPC_E_CANTPOST_INSENDCALL        :
+			return "RPC_E_CANTPOST_INSENDCALL        ";
+		case RPC_E_CANTCALLOUT_INASYNCCALL    :
+			return "RPC_E_CANTCALLOUT_INASYNCCALL    ";
+		case RPC_E_CANTCALLOUT_INEXTERNALCALL :
+			return "RPC_E_CANTCALLOUT_INEXTERNALCALL ";
+		case RPC_E_CONNECTION_TERMINATED      :
+			return "RPC_E_CONNECTION_TERMINATED      ";
+		case RPC_E_SERVER_DIED                :
+			return "RPC_E_SERVER_DIED                ";
+		case RPC_E_CLIENT_DIED                :
+			return "RPC_E_CLIENT_DIED                ";
+		case RPC_E_INVALID_DATAPACKET         :
+			return "RPC_E_INVALID_DATAPACKET         ";
+		case RPC_E_CANTTRANSMIT_CALL          :
+			return "RPC_E_CANTTRANSMIT_CALL          ";
+		case RPC_E_CLIENT_CANTMARSHAL_DATA    :
+			return "RPC_E_CLIENT_CANTMARSHAL_DATA    ";
+		case RPC_E_CLIENT_CANTUNMARSHAL_DATA  :
+			return "RPC_E_CLIENT_CANTUNMARSHAL_DATA  ";
+		case RPC_E_SERVER_CANTMARSHAL_DATA    :
+			return "RPC_E_SERVER_CANTMARSHAL_DATA    ";
+		case RPC_E_SERVER_CANTUNMARSHAL_DATA  :
+			return "RPC_E_SERVER_CANTUNMARSHAL_DATA  ";
+		case RPC_E_INVALID_DATA               :
+			return "RPC_E_INVALID_DATA               ";
+		case RPC_E_INVALID_PARAMETER          :
+			return "RPC_E_INVALID_PARAMETER          ";
+		case RPC_E_CANTCALLOUT_AGAIN          :
+			return "RPC_E_CANTCALLOUT_AGAIN          ";
+		case RPC_E_SERVER_DIED_DNE            :
+			return "RPC_E_SERVER_DIED_DNE            ";
+		case RPC_E_SYS_CALL_FAILED            :
+			return "RPC_E_SYS_CALL_FAILED            ";
+		case RPC_E_OUT_OF_RESOURCES           :
+			return "RPC_E_OUT_OF_RESOURCES           ";
+		case RPC_E_ATTEMPTED_MULTITHREAD      :
+			return "RPC_E_ATTEMPTED_MULTITHREAD      ";
+		case RPC_E_NOT_REGISTERED             :
+			return "RPC_E_NOT_REGISTERED             ";
+		case RPC_E_FAULT                      :
+			return "RPC_E_FAULT                      ";
+		case RPC_E_SERVERFAULT                :
+			return "RPC_E_SERVERFAULT                ";
+		case RPC_E_CHANGED_MODE               :
+			return "RPC_E_CHANGED_MODE               ";
+		case RPC_E_INVALIDMETHOD              :
+			return "RPC_E_INVALIDMETHOD              ";
+		case RPC_E_DISCONNECTED               :
+			return "RPC_E_DISCONNECTED               ";
+		case RPC_E_RETRY                      :
+			return "RPC_E_RETRY                      ";
+		case RPC_E_SERVERCALL_RETRYLATER      :
+			return "RPC_E_SERVERCALL_RETRYLATER      ";
+		case RPC_E_SERVERCALL_REJECTED        :
+			return "RPC_E_SERVERCALL_REJECTED        ";
+		case RPC_E_INVALID_CALLDATA           :
+			return "RPC_E_INVALID_CALLDATA           ";
+		case RPC_E_CANTCALLOUT_ININPUTSYNCCALL :
+			return "RPC_E_CANTCALLOUT_ININPUTSYNCCALL ";
+		case RPC_E_WRONG_THREAD               :
+			return "RPC_E_WRONG_THREAD               ";
+		case RPC_E_THREAD_NOT_INIT            :
+			return "RPC_E_THREAD_NOT_INIT            ";
+		case RPC_E_VERSION_MISMATCH           :
+			return "RPC_E_VERSION_MISMATCH           ";
+		case RPC_E_INVALID_HEADER             :
+			return "RPC_E_INVALID_HEADER             ";
+		case RPC_E_INVALID_EXTENSION          :
+			return "RPC_E_INVALID_EXTENSION          ";
+		case RPC_E_INVALID_IPID               :
+			return "RPC_E_INVALID_IPID               ";
+		case RPC_E_INVALID_OBJECT             :
+			return "RPC_E_INVALID_OBJECT             ";
+		case RPC_S_CALLPENDING                :
+			return "RPC_S_CALLPENDING                ";
+		case RPC_S_WAITONTIMER                :
+			return "RPC_S_WAITONTIMER                ";
+		case RPC_E_CALL_COMPLETE              :
+			return "RPC_E_CALL_COMPLETE              ";
+		case RPC_E_UNSECURE_CALL              :
+			return "RPC_E_UNSECURE_CALL              ";
+		case RPC_E_TOO_LATE                   :
+			return "RPC_E_TOO_LATE                   ";
+		case RPC_E_NO_GOOD_SECURITY_PACKAGES  :
+			return "RPC_E_NO_GOOD_SECURITY_PACKAGES  ";
+		case RPC_E_ACCESS_DENIED              :
+			return "RPC_E_ACCESS_DENIED              ";
+		case RPC_E_REMOTE_DISABLED            :
+			return "RPC_E_REMOTE_DISABLED            ";
+		case RPC_E_INVALID_OBJREF             :
+			return "RPC_E_INVALID_OBJREF             ";
+		case RPC_E_NO_CONTEXT                 :
+			return "RPC_E_NO_CONTEXT                 ";
+		case RPC_E_TIMEOUT                    :
+			return "RPC_E_TIMEOUT                    ";
+		case RPC_E_NO_SYNC                    :
+			return "RPC_E_NO_SYNC                    ";
+		case RPC_E_UNEXPECTED                 :
+			return "RPC_E_UNEXPECTED                 ";
+		case NTE_BAD_UID                      :
+			return "NTE_BAD_UID                      ";
+		case NTE_BAD_HASH                     :
+			return "NTE_BAD_HASH                     ";
+	//case NTE_BAD_HASH                     :
+	//return "NTE_BAD_HASH                     ";
+		case NTE_BAD_KEY                      :
+			return "NTE_BAD_KEY                      ";
+		case NTE_BAD_LEN                      :
+			return "NTE_BAD_LEN                      ";
+		case NTE_BAD_DATA                     :
+			return "NTE_BAD_DATA                     ";
+		case NTE_BAD_SIGNATURE                :
+			return "NTE_BAD_SIGNATURE                ";
+		case NTE_BAD_VER                      :
+			return "NTE_BAD_VER                      ";
+		case NTE_BAD_ALGID                    :
+			return "NTE_BAD_ALGID                    ";
+		case NTE_BAD_FLAGS                    :
+			return "NTE_BAD_FLAGS                    ";
+		case NTE_BAD_TYPE                     :
+			return "NTE_BAD_TYPE                     ";
+		case NTE_BAD_KEY_STATE                :
+			return "NTE_BAD_KEY_STATE                ";
+		case NTE_BAD_HASH_STATE               :
+			return "NTE_BAD_HASH_STATE               ";
+		case NTE_NO_KEY                       :
+			return "NTE_NO_KEY                       ";
+		case NTE_NO_MEMORY                    :
+			return "NTE_NO_MEMORY                    ";
+		case NTE_EXISTS                       :
+			return "NTE_EXISTS                       ";
+		case NTE_PERM                         :
+			return "NTE_PERM                         ";
+		case NTE_NOT_FOUND                    :
+			return "NTE_NOT_FOUND                    ";
+		case NTE_DOUBLE_ENCRYPT               :
+			return "NTE_DOUBLE_ENCRYPT               ";
+		case NTE_BAD_PROVIDER                 :
+			return "NTE_BAD_PROVIDER                 ";
+		case NTE_BAD_PROV_TYPE                :
+			return "NTE_BAD_PROV_TYPE                ";
+		case NTE_BAD_PUBLIC_KEY               :
+			return "NTE_BAD_PUBLIC_KEY               ";
+		case NTE_BAD_KEYSET                   :
+			return "NTE_BAD_KEYSET                   ";
+		case NTE_PROV_TYPE_NOT_DEF            :
+			return "NTE_PROV_TYPE_NOT_DEF            ";
+		case NTE_PROV_TYPE_ENTRY_BAD          :
+			return "NTE_PROV_TYPE_ENTRY_BAD          ";
+		case NTE_KEYSET_NOT_DEF               :
+			return "NTE_KEYSET_NOT_DEF               ";
+		case NTE_KEYSET_ENTRY_BAD             :
+			return "NTE_KEYSET_ENTRY_BAD             ";
+		case NTE_PROV_TYPE_NO_MATCH           :
+			return "NTE_PROV_TYPE_NO_MATCH           ";
+		case NTE_SIGNATURE_FILE_BAD           :
+			return "NTE_SIGNATURE_FILE_BAD           ";
+		case NTE_PROVIDER_DLL_FAIL            :
+			return "NTE_PROVIDER_DLL_FAIL            ";
+		case NTE_PROV_DLL_NOT_FOUND           :
+			return "NTE_PROV_DLL_NOT_FOUND           ";
+		case NTE_BAD_KEYSET_PARAM             :
+			return "NTE_BAD_KEYSET_PARAM             ";
+		case NTE_FAIL                         :
+			return "NTE_FAIL                         ";
+		case NTE_SYS_ERR                      :
+			return "NTE_SYS_ERR                      ";
+		case CRYPT_E_MSG_ERROR                :
+			return "CRYPT_E_MSG_ERROR                ";
+		case CRYPT_E_UNKNOWN_ALGO             :
+			return "CRYPT_E_UNKNOWN_ALGO             ";
+		case CRYPT_E_OID_FORMAT               :
+			return "CRYPT_E_OID_FORMAT               ";
+		case CRYPT_E_INVALID_MSG_TYPE         :
+			return "CRYPT_E_INVALID_MSG_TYPE         ";
+		case CRYPT_E_UNEXPECTED_ENCODING      :
+			return "CRYPT_E_UNEXPECTED_ENCODING      ";
+		case CRYPT_E_AUTH_ATTR_MISSING        :
+			return "CRYPT_E_AUTH_ATTR_MISSING        ";
+		case CRYPT_E_HASH_VALUE               :
+			return "CRYPT_E_HASH_VALUE               ";
+		case CRYPT_E_INVALID_INDEX            :
+			return "CRYPT_E_INVALID_INDEX            ";
+		case CRYPT_E_ALREADY_DECRYPTED        :
+			return "CRYPT_E_ALREADY_DECRYPTED        ";
+		case CRYPT_E_NOT_DECRYPTED            :
+			return "CRYPT_E_NOT_DECRYPTED            ";
+		case CRYPT_E_RECIPIENT_NOT_FOUND      :
+			return "CRYPT_E_RECIPIENT_NOT_FOUND      ";
+		case CRYPT_E_CONTROL_TYPE             :
+			return "CRYPT_E_CONTROL_TYPE             ";
+		case CRYPT_E_ISSUER_SERIALNUMBER      :
+			return "CRYPT_E_ISSUER_SERIALNUMBER      ";
+		case CRYPT_E_SIGNER_NOT_FOUND         :
+			return "CRYPT_E_SIGNER_NOT_FOUND         ";
+		case CRYPT_E_ATTRIBUTES_MISSING       :
+			return "CRYPT_E_ATTRIBUTES_MISSING       ";
+		case CRYPT_E_STREAM_MSG_NOT_READY     :
+			return "CRYPT_E_STREAM_MSG_NOT_READY     ";
+		case CRYPT_E_STREAM_INSUFFICIENT_DATA :
+			return "CRYPT_E_STREAM_INSUFFICIENT_DATA ";
+		case CRYPT_E_BAD_LEN                  :
+			return "CRYPT_E_BAD_LEN                  ";
+		case CRYPT_E_BAD_ENCODE               :
+			return "CRYPT_E_BAD_ENCODE               ";
+		case CRYPT_E_FILE_ERROR               :
+			return "CRYPT_E_FILE_ERROR               ";
+		case CRYPT_E_NOT_FOUND                :
+			return "CRYPT_E_NOT_FOUND                ";
+		case CRYPT_E_EXISTS                   :
+			return "CRYPT_E_EXISTS                   ";
+		case CRYPT_E_NO_PROVIDER              :
+			return "CRYPT_E_NO_PROVIDER              ";
+		case CRYPT_E_SELF_SIGNED              :
+			return "CRYPT_E_SELF_SIGNED              ";
+		case CRYPT_E_DELETED_PREV             :
+			return "CRYPT_E_DELETED_PREV             ";
+		case CRYPT_E_NO_MATCH                 :
+			return "CRYPT_E_NO_MATCH                 ";
+		case CRYPT_E_UNEXPECTED_MSG_TYPE      :
+			return "CRYPT_E_UNEXPECTED_MSG_TYPE      ";
+		case CRYPT_E_NO_KEY_PROPERTY          :
+			return "CRYPT_E_NO_KEY_PROPERTY          ";
+		case CRYPT_E_NO_DECRYPT_CERT          :
+			return "CRYPT_E_NO_DECRYPT_CERT          ";
+		case CRYPT_E_BAD_MSG                  :
+			return "CRYPT_E_BAD_MSG                  ";
+		case CRYPT_E_NO_SIGNER                :
+			return "CRYPT_E_NO_SIGNER                ";
+		case CRYPT_E_PENDING_CLOSE            :
+			return "CRYPT_E_PENDING_CLOSE            ";
+		case CRYPT_E_REVOKED                  :
+			return "CRYPT_E_REVOKED                  ";
+		case CRYPT_E_NO_REVOCATION_DLL        :
+			return "CRYPT_E_NO_REVOCATION_DLL        ";
+		case CRYPT_E_NO_REVOCATION_CHECK      :
+			return "CRYPT_E_NO_REVOCATION_CHECK      ";
+		case CRYPT_E_REVOCATION_OFFLINE       :
+			return "CRYPT_E_REVOCATION_OFFLINE       ";
+		case CRYPT_E_NOT_IN_REVOCATION_DATABASE :
+			return "CRYPT_E_NOT_IN_REVOCATION_DATABASE ";
+		case CRYPT_E_INVALID_NUMERIC_STRING   :
+			return "CRYPT_E_INVALID_NUMERIC_STRING   ";
+		case CRYPT_E_INVALID_PRINTABLE_STRING :
+			return "CRYPT_E_INVALID_PRINTABLE_STRING ";
+		case CRYPT_E_INVALID_IA5_STRING       :
+			return "CRYPT_E_INVALID_IA5_STRING       ";
+		case CRYPT_E_INVALID_X500_STRING      :
+			return "CRYPT_E_INVALID_X500_STRING      ";
+		case CRYPT_E_NOT_CHAR_STRING          :
+			return "CRYPT_E_NOT_CHAR_STRING          ";
+		case CRYPT_E_FILERESIZED              :
+			return "CRYPT_E_FILERESIZED              ";
+		case CRYPT_E_SECURITY_SETTINGS        :
+			return "CRYPT_E_SECURITY_SETTINGS        ";
+		case CRYPT_E_NO_VERIFY_USAGE_DLL      :
+			return "CRYPT_E_NO_VERIFY_USAGE_DLL      ";
+		case CRYPT_E_NO_VERIFY_USAGE_CHECK    :
+			return "CRYPT_E_NO_VERIFY_USAGE_CHECK    ";
+		case CRYPT_E_VERIFY_USAGE_OFFLINE     :
+			return "CRYPT_E_VERIFY_USAGE_OFFLINE     ";
+		case CRYPT_E_NOT_IN_CTL               :
+			return "CRYPT_E_NOT_IN_CTL               ";
+		case CRYPT_E_NO_TRUSTED_SIGNER        :
+			return "CRYPT_E_NO_TRUSTED_SIGNER        ";
+		case CRYPT_E_OSS_ERROR                :
+			return "CRYPT_E_OSS_ERROR                ";
+		case CERTSRV_E_BAD_REQUESTSUBJECT     :
+			return "CERTSRV_E_BAD_REQUESTSUBJECT     ";
+		case CERTSRV_E_NO_REQUEST             :
+			return "CERTSRV_E_NO_REQUEST             ";
+		case CERTSRV_E_BAD_REQUESTSTATUS      :
+			return "CERTSRV_E_BAD_REQUESTSTATUS      ";
+		case CERTSRV_E_PROPERTY_EMPTY         :
+			return "CERTSRV_E_PROPERTY_EMPTY         ";
+	//case CERTDB_E_JET_ERROR               :
+	//return "CERTDB_E_JET_ERROR               ";
+		case TRUST_E_SYSTEM_ERROR             :
+			return "TRUST_E_SYSTEM_ERROR             ";
+		case TRUST_E_NO_SIGNER_CERT           :
+			return "TRUST_E_NO_SIGNER_CERT           ";
+		case TRUST_E_COUNTER_SIGNER           :
+			return "TRUST_E_COUNTER_SIGNER           ";
+		case TRUST_E_CERT_SIGNATURE           :
+			return "TRUST_E_CERT_SIGNATURE           ";
+		case TRUST_E_TIME_STAMP               :
+			return "TRUST_E_TIME_STAMP               ";
+		case TRUST_E_BAD_DIGEST               :
+			return "TRUST_E_BAD_DIGEST               ";
+		case TRUST_E_BASIC_CONSTRAINTS        :
+			return "TRUST_E_BASIC_CONSTRAINTS        ";
+		case TRUST_E_FINANCIAL_CRITERIA       :
+			return "TRUST_E_FINANCIAL_CRITERIA       ";
+		case TRUST_E_PROVIDER_UNKNOWN         :
+			return "TRUST_E_PROVIDER_UNKNOWN         ";
+		case TRUST_E_ACTION_UNKNOWN           :
+			return "TRUST_E_ACTION_UNKNOWN           ";
+		case TRUST_E_SUBJECT_FORM_UNKNOWN     :
+			return "TRUST_E_SUBJECT_FORM_UNKNOWN     ";
+		case TRUST_E_SUBJECT_NOT_TRUSTED      :
+			return "TRUST_E_SUBJECT_NOT_TRUSTED      ";
+		case DIGSIG_E_ENCODE                  :
+			return "DIGSIG_E_ENCODE                  ";
+		case DIGSIG_E_DECODE                  :
+			return "DIGSIG_E_DECODE                  ";
+		case DIGSIG_E_EXTENSIBILITY           :
+			return "DIGSIG_E_EXTENSIBILITY           ";
+		case DIGSIG_E_CRYPTO                  :
+			return "DIGSIG_E_CRYPTO                  ";
+		case PERSIST_E_SIZEDEFINITE           :
+			return "PERSIST_E_SIZEDEFINITE           ";
+		case PERSIST_E_SIZEINDEFINITE         :
+			return "PERSIST_E_SIZEINDEFINITE         ";
+		case PERSIST_E_NOTSELFSIZING          :
+			return "PERSIST_E_NOTSELFSIZING          ";
+		case TRUST_E_NOSIGNATURE              :
+			return "TRUST_E_NOSIGNATURE              ";
+		case CERT_E_EXPIRED                   :
+			return "CERT_E_EXPIRED                   ";
+		case CERT_E_VALIDITYPERIODNESTING     :
+			return "CERT_E_VALIDITYPERIODNESTING     ";
+		case CERT_E_ROLE                      :
+			return "CERT_E_ROLE                      ";
+		case CERT_E_PATHLENCONST              :
+			return "CERT_E_PATHLENCONST              ";
+		case CERT_E_CRITICAL                  :
+			return "CERT_E_CRITICAL                  ";
+		case CERT_E_PURPOSE                   :
+			return "CERT_E_PURPOSE                   ";
+		case CERT_E_ISSUERCHAINING            :
+			return "CERT_E_ISSUERCHAINING            ";
+		case CERT_E_MALFORMED                 :
+			return "CERT_E_MALFORMED                 ";
+		case CERT_E_UNTRUSTEDROOT             :
+			return "CERT_E_UNTRUSTEDROOT             ";
+		case CERT_E_CHAINING                  :
+			return "CERT_E_CHAINING                  ";
+		case TRUST_E_FAIL                     :
+			return "TRUST_E_FAIL                     ";
+		case CERT_E_REVOKED                   :
+			return "CERT_E_REVOKED                   ";
+		case CERT_E_UNTRUSTEDTESTROOT         :
+			return "CERT_E_UNTRUSTEDTESTROOT         ";
+		case CERT_E_REVOCATION_FAILURE        :
+			return "CERT_E_REVOCATION_FAILURE        ";
+		case CERT_E_CN_NO_MATCH               :
+			return "CERT_E_CN_NO_MATCH               ";
+		case CERT_E_WRONG_USAGE               :
+			return "CERT_E_WRONG_USAGE               ";
+		case SPAPI_E_EXPECTED_SECTION_NAME    :
+			return "SPAPI_E_EXPECTED_SECTION_NAME    ";
+		case SPAPI_E_BAD_SECTION_NAME_LINE    :
+			return "SPAPI_E_BAD_SECTION_NAME_LINE    ";
+		case SPAPI_E_SECTION_NAME_TOO_LONG    :
+			return "SPAPI_E_SECTION_NAME_TOO_LONG    ";
+		case SPAPI_E_GENERAL_SYNTAX           :
+			return "SPAPI_E_GENERAL_SYNTAX           ";
+		case SPAPI_E_WRONG_INF_STYLE          :
+			return "SPAPI_E_WRONG_INF_STYLE          ";
+		case SPAPI_E_SECTION_NOT_FOUND        :
+			return "SPAPI_E_SECTION_NOT_FOUND        ";
+		case SPAPI_E_LINE_NOT_FOUND           :
+			return "SPAPI_E_LINE_NOT_FOUND           ";
+		case SPAPI_E_NO_ASSOCIATED_CLASS      :
+			return "SPAPI_E_NO_ASSOCIATED_CLASS      ";
+		case SPAPI_E_CLASS_MISMATCH           :
+			return "SPAPI_E_CLASS_MISMATCH           ";
+		case SPAPI_E_DUPLICATE_FOUND          :
+			return "SPAPI_E_DUPLICATE_FOUND          ";
+		case SPAPI_E_NO_DRIVER_SELECTED       :
+			return "SPAPI_E_NO_DRIVER_SELECTED       ";
+		case SPAPI_E_KEY_DOES_NOT_EXIST       :
+			return "SPAPI_E_KEY_DOES_NOT_EXIST       ";
+		case SPAPI_E_INVALID_DEVINST_NAME     :
+			return "SPAPI_E_INVALID_DEVINST_NAME     ";
+		case SPAPI_E_INVALID_CLASS            :
+			return "SPAPI_E_INVALID_CLASS            ";
+		case SPAPI_E_DEVINST_ALREADY_EXISTS   :
+			return "SPAPI_E_DEVINST_ALREADY_EXISTS   ";
+		case SPAPI_E_DEVINFO_NOT_REGISTERED   :
+			return "SPAPI_E_DEVINFO_NOT_REGISTERED   ";
+		case SPAPI_E_INVALID_REG_PROPERTY     :
+			return "SPAPI_E_INVALID_REG_PROPERTY     ";
+		case SPAPI_E_NO_INF                   :
+			return "SPAPI_E_NO_INF                   ";
+		case SPAPI_E_NO_SUCH_DEVINST          :
+			return "SPAPI_E_NO_SUCH_DEVINST          ";
+		case SPAPI_E_CANT_LOAD_CLASS_ICON     :
+			return "SPAPI_E_CANT_LOAD_CLASS_ICON     ";
+		case SPAPI_E_INVALID_CLASS_INSTALLER  :
+			return "SPAPI_E_INVALID_CLASS_INSTALLER  ";
+		case SPAPI_E_DI_DO_DEFAULT            :
+			return "SPAPI_E_DI_DO_DEFAULT            ";
+		case SPAPI_E_DI_NOFILECOPY            :
+			return "SPAPI_E_DI_NOFILECOPY            ";
+		case SPAPI_E_INVALID_HWPROFILE        :
+			return "SPAPI_E_INVALID_HWPROFILE        ";
+		case SPAPI_E_NO_DEVICE_SELECTED       :
+			return "SPAPI_E_NO_DEVICE_SELECTED       ";
+		case SPAPI_E_DEVINFO_LIST_LOCKED      :
+			return "SPAPI_E_DEVINFO_LIST_LOCKED      ";
+		case SPAPI_E_DEVINFO_DATA_LOCKED      :
+			return "SPAPI_E_DEVINFO_DATA_LOCKED      ";
+		case SPAPI_E_DI_BAD_PATH              :
+			return "SPAPI_E_DI_BAD_PATH              ";
+		case SPAPI_E_NO_CLASSINSTALL_PARAMS   :
+			return "SPAPI_E_NO_CLASSINSTALL_PARAMS   ";
+		case SPAPI_E_FILEQUEUE_LOCKED         :
+			return "SPAPI_E_FILEQUEUE_LOCKED         ";
+		case SPAPI_E_BAD_SERVICE_INSTALLSECT  :
+			return "SPAPI_E_BAD_SERVICE_INSTALLSECT  ";
+		case SPAPI_E_NO_CLASS_DRIVER_LIST     :
+			return "SPAPI_E_NO_CLASS_DRIVER_LIST     ";
+		case SPAPI_E_NO_ASSOCIATED_SERVICE    :
+			return "SPAPI_E_NO_ASSOCIATED_SERVICE    ";
+		case SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE :
+			return "SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE ";
+		case SPAPI_E_DEVICE_INTERFACE_ACTIVE  :
+			return "SPAPI_E_DEVICE_INTERFACE_ACTIVE  ";
+		case SPAPI_E_DEVICE_INTERFACE_REMOVED :
+			return "SPAPI_E_DEVICE_INTERFACE_REMOVED ";
+		case SPAPI_E_BAD_INTERFACE_INSTALLSECT :
+			return "SPAPI_E_BAD_INTERFACE_INSTALLSECT ";
+		case SPAPI_E_NO_SUCH_INTERFACE_CLASS  :
+			return "SPAPI_E_NO_SUCH_INTERFACE_CLASS  ";
+		case SPAPI_E_INVALID_REFERENCE_STRING :
+			return "SPAPI_E_INVALID_REFERENCE_STRING ";
+		case SPAPI_E_INVALID_MACHINENAME      :
+			return "SPAPI_E_INVALID_MACHINENAME      ";
+		case SPAPI_E_REMOTE_COMM_FAILURE      :
+			return "SPAPI_E_REMOTE_COMM_FAILURE      ";
+		case SPAPI_E_MACHINE_UNAVAILABLE      :
+			return "SPAPI_E_MACHINE_UNAVAILABLE      ";
+		case SPAPI_E_NO_CONFIGMGR_SERVICES    :
+			return "SPAPI_E_NO_CONFIGMGR_SERVICES    ";
+		case SPAPI_E_INVALID_PROPPAGE_PROVIDER :
+			return "SPAPI_E_INVALID_PROPPAGE_PROVIDER ";
+		case SPAPI_E_NO_SUCH_DEVICE_INTERFACE :
+			return "SPAPI_E_NO_SUCH_DEVICE_INTERFACE ";
+		case SPAPI_E_DI_POSTPROCESSING_REQUIRED :
+			return "SPAPI_E_DI_POSTPROCESSING_REQUIRED ";
+		case SPAPI_E_INVALID_COINSTALLER      :
+			return "SPAPI_E_INVALID_COINSTALLER      ";
+		case SPAPI_E_NO_COMPAT_DRIVERS        :
+			return "SPAPI_E_NO_COMPAT_DRIVERS        ";
+		case SPAPI_E_NO_DEVICE_ICON           :
+			return "SPAPI_E_NO_DEVICE_ICON           ";
+		case SPAPI_E_INVALID_INF_LOGCONFIG    :
+			return "SPAPI_E_INVALID_INF_LOGCONFIG    ";
+		case SPAPI_E_DI_DONT_INSTALL          :
+			return "SPAPI_E_DI_DONT_INSTALL          ";
+		case SPAPI_E_INVALID_FILTER_DRIVER    :
+			return "SPAPI_E_INVALID_FILTER_DRIVER    ";
+		case SPAPI_E_ERROR_NOT_INSTALLED      :
+			return "SPAPI_E_ERROR_NOT_INSTALLED      ";
 
-    
-  default:
-    static char buff[1000];
-    sprintf(buff, "Unrecognized error value: %08X\0", error);
+		default:
+			static char buff[1000];
+			sprintf(buff, "Unrecognized error value: %08X\0", error);
 
-    return buff;
-  }
+			return buff;
+	}
 }
 

+ 0 - 5
panda/src/wdxdisplay/wdxGraphicsPipe.h

@@ -61,11 +61,6 @@ protected:
   wdxGraphicsPipe(const wdxGraphicsPipe&);
   wdxGraphicsPipe& operator=(const wdxGraphicsPipe&);
 
-  /*
-  static LONG WINAPI static_window_proc(HWND hwnd, UINT msg, WPARAM wparam,
-	LPARAM lparam);
-  LONG window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
-  */
 };
 
 #endif

File diff suppressed because it is too large
+ 494 - 1026
panda/src/wdxdisplay/wdxGraphicsWindow.cxx


+ 6 - 19
panda/src/wdxdisplay/wdxGraphicsWindow.h

@@ -51,6 +51,7 @@ public:
   static LONG WINAPI static_window_proc(HWND hwnd, UINT msg, WPARAM wparam,
 	LPARAM lparam);
   LONG window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
+  void process_events(void);
 
   INLINE bool mouse_entry_enabled(void) { return _mouse_entry_enabled; }
   INLINE bool mouse_motion_enabled(void) { return _mouse_motion_enabled; }
@@ -65,18 +66,10 @@ public:
   void dx_setup();
   virtual void begin_frame( void );
   void show_frame();
-  DXGraphicsStateGuardian *get_dxgsg(void);
+  DXGraphicsStateGuardian *_dxgsg;
 
 protected:
-#if WBD_GL_MODE
-  PIXELFORMATDESCRIPTOR* try_for_visual(/*wdxGraphicsPipe *pipe,*/
-	int mask, int want_depth_bits = 1, int want_color_bits = 1);
-  void choose_visual(void);
-  static void get_config(PIXELFORMATDESCRIPTOR* visual, int attrib, int *value);
-#else 
   ButtonHandle lookup_key(WPARAM wparam) const;
-
-#endif
   virtual void config( void );
   void setup_colormap(void);
 
@@ -85,10 +78,6 @@ protected:
   void enable_mouse_passive_motion(bool val);
   void enable_mouse_entry(bool val);
 
-  void process_events(void);
-  //void idle_wait(void);
-
-  
 public:
   HWND				_mwindow;
   HWND              _hParentWindow;
@@ -96,24 +85,22 @@ public:
 private:
   HDC				_hdc;
   HPALETTE			_colormap;
-
-
+  typedef enum { NotAdjusting,MovingOrResizing,Resizing } WindowAdjustType;
+  WindowAdjustType _WindowAdjustingType;
+  HCURSOR _hMouseCrossIcon;
+  bool    _bSizeIsMaximized;
   bool				_mouse_input_enabled;
   bool				_mouse_motion_enabled;
   bool				_mouse_passive_motion_enabled;
   bool				_mouse_entry_enabled;
   int				_entry_state;
   bool				_ignore_key_repeat;
-  bool				_dx_ready;
 
 public:
   static TypeHandle get_class_type(void);
   static void init_type(void);
   virtual TypeHandle get_type(void) const;
   virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
-//  virtual void make_current(void);
-//  virtual void unmake_current(void);
-
 
 private:
   static TypeHandle _type_handle;

Some files were not shown because too many files changed in this diff