mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-29 00:56:06 +00:00
123 lines
2.8 KiB
C++
123 lines
2.8 KiB
C++
/** (c) Nullsoft, Inc. C O N F I D E N T I A L
|
|
** Filename:
|
|
** Project:
|
|
** Description:
|
|
** Author:
|
|
** Created:
|
|
**/
|
|
#include "Main.h"
|
|
#include "wa_dlg.h"
|
|
#include "../nu/AutoChar.h"
|
|
#include "resource.h"
|
|
|
|
extern "C" extern int g_skinloadedmanually;
|
|
|
|
int Main_OnGetText(wchar_t *text, int sizeCch)
|
|
{
|
|
size_t rem;
|
|
StringCchCopyExW(text, sizeCch, caption, 0, &rem, 0);
|
|
return (int)sizeCch-rem;
|
|
|
|
}
|
|
// evil 256 color mode windows palette handling
|
|
int Main_OnQueryNewPalette(HWND hwnd)
|
|
{
|
|
if (draw_hpal) { // hPal is NULL if we're in hicolor
|
|
HDC hdc = GetWindowDC(hwnd);
|
|
SelectPalette(hdc,draw_hpal,FALSE);
|
|
RealizePalette(hdc);
|
|
InvalidateRect(hwnd,NULL,FALSE);
|
|
ReleaseDC(hwnd,hdc);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
// more 256 color windows palette handling
|
|
int Main_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange)
|
|
{
|
|
if (draw_hpal)
|
|
{
|
|
HDC hdc = GetWindowDC(hwnd);
|
|
SelectPalette(hdc,draw_hpal,FALSE);
|
|
RealizePalette(hdc);
|
|
UpdateColors(hdc);
|
|
ReleaseDC(hwnd,hdc);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
// displaychange handling. This reinitializes bitmaps, to use optimal storage format
|
|
// depending on mode (DIB or DDB)
|
|
int Main_OnDisplayChange(HWND hwnd)
|
|
{
|
|
int t=0;
|
|
if (g_skinloadedmanually)
|
|
{
|
|
Skin_Load();
|
|
}
|
|
|
|
if (g_skinmissinggenff)
|
|
{
|
|
wchar_t msg[512] = {0};
|
|
StringCchPrintfW(msg, 512, getStringW(IDS_NO_MODERN_SKIN_SUPPORT, NULL, 0), config_skin);
|
|
MessageBoxW(NULL, msg, getStringW(IDS_SKIN_LOAD_ERROR, NULL, 0), MB_ICONWARNING | MB_OK | MB_TOPMOST);
|
|
}
|
|
|
|
draw_setnoupdate(1);
|
|
draw_init();
|
|
draw_clutterbar(0);
|
|
draw_shuffle(config_shuffle,0);
|
|
draw_eject(0);
|
|
draw_eqplbut(config_eq_open,0,config_pe_open,0);
|
|
draw_repeat(config_repeat,0);
|
|
draw_buttonbar(-1);
|
|
draw_volumebar(config_volume,0);
|
|
draw_panbar(config_pan,0);
|
|
draw_songname(L"",&t,0);
|
|
draw_playicon(playing?paused?4:1:2);
|
|
draw_tbar(config_hilite?(GetForegroundWindow() == hMainWindow?1:0):1, config_windowshade,eggstat);
|
|
|
|
draw_monostereo(-1);
|
|
if (playing)
|
|
{
|
|
draw_bitmixrate(-1,-1);
|
|
}
|
|
|
|
draw_setnoupdate(0);
|
|
draw_songname(FileTitle,&ui_songposition,playing?in_getlength():PlayList_getcurrentlength());
|
|
|
|
// tell other windows
|
|
if (IsWindow(hVideoWindow))
|
|
SendMessageW(hVideoWindow, WM_DISPLAYCHANGE,0,0);
|
|
if (IsWindow(hEQWindow))
|
|
SendMessageW(hEQWindow, WM_DISPLAYCHANGE,0,0);
|
|
if (IsWindow(hPLWindow))
|
|
SendMessageW(hPLWindow, WM_DISPLAYCHANGE,0,0);
|
|
/*
|
|
if (IsWindow(hMBWindow))
|
|
SendMessageW(hVideoWindow, WM_DISPLAYCHANGE,0,0);
|
|
*/
|
|
if (IsWindow(hExternalVisWindow))
|
|
SendMessageW(hExternalVisWindow, WM_DISPLAYCHANGE,0,0);
|
|
|
|
SetTimer(hMainWindow, 101, 250, NULL); // set_aot(-1);
|
|
|
|
InvalidateRect(hwnd,NULL,FALSE);
|
|
//UpdateWindow(hwnd);
|
|
|
|
EnterCriticalSection(&embedcs);
|
|
{
|
|
embedWindowState *p =embedwndlist;
|
|
while (p)
|
|
{
|
|
PostMessageW(p->me,WM_DISPLAYCHANGE,0,0);
|
|
p=p->link;
|
|
}
|
|
}
|
|
|
|
LeaveCriticalSection(&embedcs);
|
|
|
|
PostMessageW(hMainWindow, WM_WA_IPC, 0, IPC_SKIN_CHANGED);
|
|
return 1;
|
|
}
|