示例#1
0
DXContext::~DXContext()
{
	Internal_CleanUp();
}
示例#2
0
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;
}