HBITMAP vmsUploadsDllCaller::GetBitmap(vmsUploadsDll::vmsWhichBitmap enBmp)
{
	UINT nId = 0;
	BOOL bCheckAlpha = FALSE;

	switch (enBmp)
	{
	case vmsUploadsDll::BMP_FOR_UPLOADSMENU:
		bCheckAlpha = _SkinMgr.tbUseAlpha_ForAllPluginMenuImages ();
		nId = IDB_TOOL_DLD_16; break;

	case vmsUploadsDll::BMP_FOR_UPLOADSMENU_D:
		bCheckAlpha = _SkinMgr.tbUseAlpha_ForAllPluginMenuImages ();
		nId = IDB_TOOL_DLD_16_D; break;

	case vmsUploadsDll::BMP_FOR_TASKSLIST:
		nId = IDB_DOWNLOADSTASKS; break;

	case vmsUploadsDll::BMP_FOR_TASKSLIST_SEL:
		nId = IDB_DOWNLOADSTASKS_SEL; break;

	case vmsUploadsDll::BMP_FOR_LOGLIST: 
		nId = IDB_LOGSTATES; break;
	}

	HBITMAP hbm = SBMP  (nId);

	if (bCheckAlpha && _TB_USE_ALPHA)
	{
		CBitmap bmp; bmp.Attach (hbm);
		ConvertBmp32WithAlphaToBmp32WithoutAlpha (bmp, GetSysColor (COLOR_MENU));
		hbm = (HBITMAP)bmp.Detach ();
	}

	return hbm;
}
BOOL fsPluginMgr::LoadBuiltIn()
{
    fsPluginInfo plug;

    plug.hLib = NULL;

    m_images.Create (_TB_SIZE_X, _TB_SIZE_Y, ILC_COLOR32 | ILC_MASK, 5, 1);




    fntGetMainMenu afnGMM [] = {
        CDownloadsWnd::Plugin_GetMainMenu,
        CFlashVideoDownloadsWnd::Plugin_GetMainMenu,
        CTorrentsWnd::Plugin_GetMainMenu,

        CShedulerWnd::Plugin_GetMainMenu,
        CHFEWnd::Plugin_GetMainMenu,
        CSitesWnd::Plugin_GetMainMenu,
        CSpiderWnd::Plugin_GetMainMenu,
    };
    fntGetViewMenu afnGVM [] = {
        CDownloadsWnd::Plugin_GetViewMenu,
        CFlashVideoDownloadsWnd::Plugin_GetViewMenu,
        CTorrentsWnd::Plugin_GetViewMenu,

        CShedulerWnd::Plugin_GetViewMenu,
        CHFEWnd::Plugin_GetViewMenu,
        CSitesWnd::Plugin_GetViewMenu,
        CSpiderWnd::Plugin_GetViewMenu,
    };


    const int cPlugins = sizeof (afnGMM) / sizeof (fntGetMainMenu);


    fntCreateMainWindow afnCMW [] = {
        CDownloadsWnd::Plugin_CreateMainWindow,
        CFlashVideoDownloadsWnd::Plugin_CreateMainWindow,
        CTorrentsWnd::Plugin_CreateMainWindow,

        CShedulerWnd::Plugin_CreateMainWindow,
        CHFEWnd::Plugin_CreateMainWindow,
        CSitesWnd::Plugin_CreateMainWindow,
        CSpiderWnd::Plugin_CreateMainWindow
    };

    fntGetPluginNames afnGPN [] = {
        CDownloadsWnd::Plugin_GetPluginNames,
        CFlashVideoDownloadsWnd::Plugin_GetPluginNames,
        CTorrentsWnd::Plugin_GetPluginNames,

        CShedulerWnd::Plugin_GetPluginNames,
        CHFEWnd::Plugin_GetPluginNames,
        CSitesWnd::Plugin_GetPluginNames,
        CSpiderWnd::Plugin_GetPluginNames
    };

    fntSetLanguage afnSL [] = {
        CDownloadsWnd::Plugin_SetLanguage,
        CFlashVideoDownloadsWnd::Plugin_SetLanguage,
        CTorrentsWnd::Plugin_SetLanguage,

        CShedulerWnd::Plugin_SetLanguage,
        CHFEWnd::Plugin_SetLanguage,
        CSitesWnd::Plugin_SetLanguage,
        CSpiderWnd::Plugin_SetLanguage
    };

    UINT aIDBmps [] = {
        IDB_TOOL_DLDS, IDB_TOOL_DLDS, IDB_TOOL_BT,
        IDB_TOOL_SCHEDULE, IDB_TOOL_HFE,
        IDB_TOOL_SITES, IDB_TOOL_SPIDER
    };
    UINT aIDBmpsD [] = {
        IDB_TOOL_DLDS_D, IDB_TOOL_DLDS_D, IDB_TOOL_BT_D,
        IDB_TOOL_SCHEDULE_D, IDB_TOOL_HFE_D,
        IDB_TOOL_SITES_D, IDB_TOOL_SPIDER_D
    };

    fntGetMenuImages afnGMI [] = {
        CDownloadsWnd::Plugin_GetMenuImages,
        CFlashVideoDownloadsWnd::Plugin_GetMenuImages,
        CTorrentsWnd::Plugin_GetMenuImages,

        CShedulerWnd::Plugin_GetMenuImages,
        CHFEWnd::Plugin_GetMenuImages,
        CSitesWnd::Plugin_GetMenuImages,
        CSpiderWnd::Plugin_GetMenuImages
    };

    fntGetTBInfo afnGTBI [] = {
        CDownloadsWnd::Plugin_GetToolBarInfo,
        CFlashVideoDownloadsWnd::Plugin_GetToolBarInfo,
        CTorrentsWnd::Plugin_GetToolBarInfo,

        CShedulerWnd::Plugin_GetToolBarInfo,
        CHFEWnd::Plugin_GetToolBarInfo,
        CSitesWnd::Plugin_GetToolBarInfo,
        CSpiderWnd::Plugin_GetToolBarInfo
    };

    fntGetMenuViewItems afnGMVI [] = {
        CDownloadsWnd::Plugin_GetMenuViewItems,
        CFlashVideoDownloadsWnd::Plugin_GetMenuViewItems,
        CTorrentsWnd::Plugin_GetMenuViewItems,

        CShedulerWnd::Plugin_GetMenuViewItems,
        CHFEWnd::Plugin_GetMenuViewItems,
        CSitesWnd::Plugin_GetMenuViewItems,
        CSpiderWnd::Plugin_GetMenuViewItems
    };


    for (int i = 0; i < cPlugins; i++)
    {
        LPCSTR pszPlug, psz;
        afnGPN [i] (&psz, &pszPlug);



        plug.hWnd = afnCMW [i] (m_pPluginsFrame->m_hWnd);
        if (plug.hWnd == NULL)
        {
            if (i == 0)
                return FALSE;
            continue;
        }


        plug.hMenuMain = afnGMM [i] ();
        plug.hMenuView = afnGVM [i] ();



        fsnew1 (plug.pbmpMenuImages, CBitmap);
        plug.pbmpMenuImages->Attach (SBMP (aIDBmps [i]));
        fsnew1 (plug.pbmpMenuDImages, CBitmap);
        plug.pbmpMenuDImages->Attach (SBMP (aIDBmpsD [i]));


        afnGMI [i] (&plug.pMenuMainImages, &plug.cMenuMainImages);
        plug.pMenuViewImages = NULL;
        plug.cMenuViewImages = 0;


        plug.pfnGPN = afnGPN [i];
        plug.pfnGTBI = afnGTBI [i];
        plug.pfnGMVI = afnGMVI [i];
        plug.pfnSetLanguage = afnSL [i];
        plug.pfnRTS = NULL;
        plug.pfnShutdown = NULL;


        afnGMVI [i] (&plug.pMenuViewItems, &plug.cMenuViewItems);

        m_vWndPlugs.add (plug);


        wgTButtonInfo* pButtons;
        int cButtons;
        afnGTBI [i] (&pButtons, &cButtons);
        CBitmap bmp1, bmp2;

        bmp1.Attach (SBMP (aIDBmps [i]));
        bmp2.Attach (SBMP (aIDBmpsD [i]));

        if (_TB_USE_ALPHA)
        {
            ConvertBmp32WithAlphaToBmp32WithoutAlpha (bmp1, GetSysColor (COLOR_3DFACE));
            ConvertBmp32WithAlphaToBmp32WithoutAlpha (bmp2, GetSysColor (COLOR_3DFACE));
        }

        _TBMgr.InsertGroup (pButtons, &bmp1, &bmp2, cButtons);
    }

    return TRUE;
}