summary refs log blame commit diff stats
path: root/src/htm/Program.cs
blob: afbb64833c27ac6c13ba6ae3901295322c7f2b31 (plain) (tree)
1
2

                        

















                                                                            

             















                                                                 
                                       


         
/**
 * HexChat Theme Manager
 *
 * Copyright (C) 2012 Patrick Griffs
 * Copyright (C) 2012 Berke Viktor
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace thememan
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new HTM());
        }
    }
}
">// For example: // // extern "C" BOOL PASCAL EXPORT ExportedFunction() // { // AFX_MANAGE_STATE(AfxGetStaticModuleState()); // // normal function body here // } // // It is very important that this macro appear in each // function, prior to any calls into MFC. This means that // it must appear as the first statement within the // function, even before any object variable declarations // as their constructors may generate calls into the MFC // DLL. // // Please see MFC Technical Notes 33 and 58 for additional // details. // ///////////////////////////////////////////////////////////////////////////// // CWmpaApp BEGIN_MESSAGE_MAP(CWmpaApp, CWinApp) //{{AFX_MSG_MAP(CWmpaApp) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWmpaApp construction CWmpaApp::CWmpaApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance m_pDialog = NULL; } ///////////////////////////////////////////////////////////////////////////// // The one and only CWmpaApp object CWmpaApp theApp; ///////////////////////////////////////////////////////////////////////////// // CWmpaApp initialization BOOL CWmpaApp::InitInstance() { // Register all OLE server (factories) as running. This enables the // OLE libraries to create objects from other applications. COleObjectFactory::RegisterAll(); // WARNING: This function enables the ActiveX control container // Without this function you will not be able to load the WMP // In fact you will get the following error: // >>> If this dialog has OLE controls: // >>> AfxEnableControlContainer has not been called yet. // >>> You should call it in your app's InitInstance function. AfxEnableControlContainer(); // WARNING: This function initializes the COM library for use // Without this function you will not be able to load the WMP // In fact you will get the following error: // CoCreateInstance of OLE control {6BF52A52-394A-11D3-B153-00C04F79FAA6} failed. // >>> Result code: 0x800401f0 // >>> Is the control is properly registered? // The Error Lookup tool will tell you result code 0x800401F0 means // CoInitialize has not been called. CoInitialize(NULL); return TRUE; } /****************************************************************** * ShowWMPA ******************************************************************/ BOOL CWmpaApp::ShowWMPA(void) { HRESULT result = FALSE; BOOL created; // WARNING: The following two funcions make sure we look for // our resources in our DLL not in the calling EXE // Without these functions you will not be able to load the // Windows Media Player HMODULE hModule = GetModuleHandle("WMPA.DLL"); AfxSetResourceHandle((HINSTANCE) hModule); if (m_pDialog == NULL) m_pDialog = new CWMPADialog; created = m_pDialog->Create(IDD_WMPADIALOG, m_pDialog); if (!created) return(E_FAIL); m_pDialog->m_hIcon = LoadIcon(IDI_XCHAT); m_pDialog->SetIcon(m_pDialog->m_hIcon, TRUE); result = m_pDialog->ShowWindow(SW_SHOWNORMAL); return(created); } ///////////////////////////////////////////////////////////////////////////// // Special entry points required for inproc servers STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); return AfxDllGetClassObject(rclsid, riid, ppv); } STDAPI DllCanUnloadNow(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); return AfxDllCanUnloadNow(); } // by exporting DllRegisterServer, you can use regsvr.exe STDAPI DllRegisterServer(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); COleObjectFactory::UpdateRegistryAll(); return(S_OK); } /****************************************************************** * DestroyWMPA ******************************************************************/ BOOL CWmpaApp::DestroyWMPA(void) { if (theApp.m_pDialog == NULL) return(FALSE); theApp.m_pDialog->m_WMP.GetControls().stop(); theApp.m_pDialog->DeleteTrayIcon(); theApp.m_pDialog->DestroyWindow(); return(TRUE); } /****************************************************************** * StartWindowsMediaPlayer ******************************************************************/ BOOL StartWindowsMediaPlayer(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); BOOL result = theApp.ShowWMPA(); return(result); } /****************************************************************** * StopWindowsMediaPlayer ******************************************************************/ BOOL StopWindowsMediaPlayer(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); BOOL result = theApp.DestroyWMPA(); return(result); } /****************************************************************** * GetWindowsMediaPlayer ******************************************************************/ CWMPPlayer4 *GetWindowsMediaPlayer(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if (theApp.m_pDialog == NULL) return(NULL); return(&(theApp.m_pDialog->m_WMP)); } /****************************************************************** * GetWMPADialog ******************************************************************/ CWMPADialog *GetWMPADialog(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); if (theApp.m_pDialog == NULL) return(NULL); return(theApp.m_pDialog); }