DXContext::~DXContext() { Internal_CleanUp(); }
DXContext::DXContext(HWND hWndWinamp,HINSTANCE hInstance,LPCWSTR szClassName,LPCSTR szWindowCaption,WNDPROC pProc,LONG_PTR uWindowLong, int minimize_winamp, wchar_t* szIniFile) { m_classAtom = 0; m_szWindowCaption[0] = 0; m_hwnd = NULL; m_lpD3D = NULL; m_lpDevice = NULL; m_hmod_d3d9 = NULL; m_hmod_d3dx9 = NULL; m_zFormat = D3DFMT_UNKNOWN; for (int i=0; i<MAX_DXC_ADAPTERS; i++) m_orig_windowed_mode_format[i] = D3DFMT_UNKNOWN; m_ordinal_adapter = D3DADAPTER_DEFAULT; m_ignore_wm_destroy = 0; m_hwnd_winamp = hWndWinamp; m_minimize_winamp = minimize_winamp; m_winamp_minimized = 0; m_truly_exiting = 0; m_bpp = 0; m_frame_delay = 0; StringCbCopyW(m_szIniFile, sizeof(m_szIniFile), szIniFile); memset(&myWindowState,0,sizeof(myWindowState)); m_szDriver[0] = 0; m_szDesc[0] = 0; WNDCLASSW wc = {0}; // clear the error register m_lastErr = S_OK; // clear the active flag m_ready=FALSE; // Set up and register window class wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; // CS_DBLCLKS lets the window receive WM_LBUTTONDBLCLK, for toggling fullscreen mode... wc.lpfnWndProc = (WNDPROC) pProc; wc.cbWndExtra = sizeof(DWORD); wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PLUGIN_ICON));//NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = szClassName; m_classAtom = RegisterClassW(&wc); if (!m_classAtom) { wchar_t title[64]; int y = GetLastError(); m_lastErr = DXC_ERR_REGWIN; MessageBoxW(m_hwnd, WASABI_API_LNGSTRINGW(IDS_UNABLE_TO_REGISTER_WINDOW_CLASS), WASABI_API_LNGSTRINGW_BUF(IDS_MILKDROP_ERROR, title, 64), MB_OK|MB_SETFOREGROUND|MB_TOPMOST); Internal_CleanUp(); return; } StringCbCopy(m_szWindowCaption, sizeof(m_szWindowCaption), szWindowCaption); m_hInstance = hInstance; m_uWindowLong = uWindowLong; }