📄 freeampui.cpp
字号:
SetMenuItemInfo(popupHandle,
6,
TRUE,
&mii);
}
SetForegroundWindow(m_hwnd);
// display the popup
command = TrackPopupMenu( popupHandle,
TPM_RETURNCMD | TPM_RIGHTBUTTON |
TPM_NONOTIFY,
pt.x,
pt.y,
0,
m_hwnd,
NULL);
SetForegroundWindow(m_hwnd);
switch(command)
{
case IDC_ABOUT:
SendMessage(m_hwnd, WM_COMMAND, kAboutControl, 0);
break;
case IDC_OPEN:
SendMessage(m_hwnd, WM_COMMAND, kOpenControl, 0);
break;
case IDC_SAVE:
SendMessage(m_hwnd, WM_COMMAND, kSaveControl, 0);
break;
case IDC_PREF:
SendMessage(m_hwnd, WM_COMMAND, kPrefControl, 0);
break;
case IDC_PLAY:
SendMessage(m_hwnd, WM_COMMAND, kPlayControl, 0);
break;
case IDC_STOP:
SendMessage(m_hwnd, WM_COMMAND, kStopControl, 0);
break;
case IDC_PAUSE:
SendMessage(m_hwnd, WM_COMMAND, kPauseControl, 0);
break;
case IDC_NEXTSONG:
SendMessage(m_hwnd, WM_COMMAND, kNextControl, 0);
break;
case IDC_LASTSONG:
SendMessage(m_hwnd, WM_COMMAND, kLastControl, 0);
break;
case IDC_EXIT:
SendMessage(m_hwnd, WM_COMMAND, kCloseControl, 0);
break;
}
break;
}
}
}
int32
FreeAmpUI::
Paint()
{
int32 result = 0;
PAINTSTRUCT ps;
HDC hdc;
hdc = BeginPaint( m_hwnd, &ps );
Item<View*>* viewItem = m_viewList->FirstItem();
do
{
if(viewItem->Member()->Visible())
{
viewItem->Member()->Draw(m_playerCanvas, &ps.rcPaint);
}
}while(viewItem = m_viewList->NextItem(viewItem) );
/*int32 x = ps.rcPaint.left;
int32 y = ps.rcPaint.top;
int32 width = ps.rcPaint.right - ps.rcPaint.left;
int32 height = ps.rcPaint.bottom - ps.rcPaint.top;*/
int32 x = 0;
int32 y = 0;
int32 width = m_width;
int32 height = m_height;
if(m_palette)
{
SelectPalette(hdc, m_palette, FALSE);
RealizePalette(hdc);
}
StretchDIBits( hdc,
x,y,width,height,
x,y,width,height,
m_playerCanvas->Bits(),
m_playerCanvas->BitmapInfo(),
DIB_RGB_COLORS,
SRCCOPY);
/*HBRUSH brush = CreateSolidBrush(RGB(0,0,0));
FillRgn(hdc, m_windowRegion, brush);
for(int32 i = 0; i < kNumControls; i++)
{
HBRUSH brush = CreateSolidBrush(g_controlColors[i].Pack());
int32 ret = FillRgn(hdc, m_controlRegions[i], brush);
}*/
EndPaint( m_hwnd, &ps );
return result;
}
void
FreeAmpUI::
CreateControls()
{
m_viewList = new LinkedList<View*>();
m_backgroundView = new BitmapView( m_hwnd,
NULL,
m_windowRegion,
m_bodyBitmap);
m_playlistBackView = new BitmapView(m_hwnd,
NULL,
m_playlistBodyRegion,
m_playlistBodyBitmap);
m_playlistBackView->Hide();
/*
m_resizeView = new ResizeView( m_hwnd,
m_backgroundView,
m_controlRegions[kResizeControl],
kPlayControl);
*/
m_playView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kPlayControl],
m_playBitmap,
kPlayControl);
m_stopView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kPlayControl],
m_stopBitmap,
kStopControl);
m_stopView->Hide();
m_pauseView = new ButtonView( m_hwnd,
m_backgroundView,
m_controlRegions[kPauseControl],
m_pauseBitmap,
kPauseControl,
ButtonType_ToggleButton);
m_nextView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kNextControl],
m_nextBitmap,
kNextControl);
m_lastView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kLastControl],
m_lastBitmap,
kLastControl);
m_modeView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kModeControl],
m_modeBitmap,
kModeControl);
m_minimizeView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kMinimizeControl],
m_minimizeBitmap,
kMinimizeControl);
m_closeView = new ButtonView( m_hwnd,
m_backgroundView,
m_controlRegions[kCloseControl],
m_closeBitmap,
kCloseControl);
m_repeatView = new ButtonView( m_hwnd,
m_backgroundView,
m_controlRegions[kRepeatControl],
m_repeatBitmap,
kRepeatControl);
m_shuffleView = new ButtonView( m_hwnd,
m_backgroundView,
m_controlRegions[kShuffleControl],
m_shuffleBitmap,
kShuffleControl);
m_openView = new ButtonView(m_hwnd,
m_backgroundView,
m_controlRegions[kOpenControl],
m_openBitmap,
kOpenControl);
m_volumeView = new DialView(m_hwnd,
m_backgroundView,
m_controlRegions[kVolumeControl],
m_volumeDialBitmap,
kVolumeControl);
m_seekView = new DialView( m_hwnd,
m_backgroundView,
m_controlRegions[kSeekControl],
m_seekDialBitmap,
kSeekControl);
m_shuffleIconView = new StatusView( m_hwnd,
m_backgroundView,
m_controlRegions[kShuffleStatusControl],
m_shuffleIconBitmap);
m_repeatIconView = new StatusView( m_hwnd,
m_backgroundView,
m_controlRegions[kRepeatStatusControl],
m_repeatIconBitmap);
m_repeatAllIconView = new StatusView( m_hwnd,
m_backgroundView,
m_controlRegions[kRepeatAllStatusControl],
m_repeatAllIconBitmap);
m_songTitleView = new TextView( m_hwnd,
m_backgroundView,
m_controlRegions[kSongTitleControl],
m_smallFontBitmap,
10,
smallFontWidth,
kSongTitleControl,
TextType_MouseWiggle);
m_songTitleView->SetText("Welcome to FreeAmp");
SetTrayTooltip("Welcome to FreeAmp");
m_prevSongInfoText = new char [strlen(m_songTitleView->Text()) + 1];
strcpy(m_prevSongInfoText, m_songTitleView->Text());
m_timeView = new TimeView( m_hwnd,
m_backgroundView,
m_controlRegions[kSongInfoControl],
//m_timeBackgroundBitmap,
m_largeFontBitmap,
12,
largeFontWidth,
m_smallFontBitmap,
10,
smallFontWidth,
kSongInfoControl,
TimeType_TimeOnRight);
m_timeView->SetLabel("current");
m_volumeInfoView = new VolumeView( m_hwnd,
m_backgroundView,
m_controlRegions[kSongInfoControl],
m_timeBackgroundBitmap,
m_largeFontBitmap,
12,
largeFontWidth,
m_smallFontBitmap,
10,
smallFontWidth,
kSongInfoControl);
m_volumeInfoView->Hide();
m_panelBackingView = new BitmapView(m_hwnd,
NULL,
m_controlRegions[kPanelBackingControl],
m_panelBackingBitmap,
m_panelBackingMaskBitmap);
m_panelBackingView->Hide();
m_drawerView = new BitmapView( m_hwnd,
NULL,
m_controlRegions[kPlaylistControl],
m_drawerBitmap,
m_drawerMaskBitmap,
kPlaylistControl);
m_playlistView = new ListView( m_hwnd,
NULL,
m_controlRegions[kPlaylistDisplayControl],
MULTIPLE_SELECTION_LIST);
m_playlistView->Hide();
m_scrollbarView = new ScrollView( m_hwnd,
NULL,
m_controlRegions[kScrollbarControl],
m_scrollbarBitmap,
ScrollType_Vertical);
m_scrollbarView->Hide();
m_scrollbarView->SetTarget(m_playlistView);
m_addView = new ButtonView( m_hwnd,
m_panelBackingView,
m_controlRegions[kAddControl],
m_addBitmap,
kAddControl);
m_addView->Hide();
m_deleteView = new ButtonView( m_hwnd,
m_panelBackingView,
m_controlRegions[kDeleteControl],
m_deleteBitmap,
kDeleteControl);
m_deleteView->Hide();
m_loadView = new ButtonView(m_hwnd,
m_panelBackingView,
m_controlRegions[kLoadControl],
m_loadBitmap,
kLoadControl);
m_loadView->Hide();
m_saveView = new ButtonView(m_hwnd,
m_panelBackingView,
m_controlRegions[kSaveControl],
m_saveBitmap,
kSaveControl);
m_saveView->Hide();
m_viewList->Append(m_backgroundView);
m_viewList->Append(m_playlistBackView);
//m_viewList->Append(m_resizeView);
m_viewList->Append(m_playView);
m_viewList->Append(m_stopView);
m_viewList->Append(m_pauseView);
m_viewList->Append(m_nextView);
m_viewList->Append(m_lastView);
m_viewList->Append(m_modeView);
m_viewList->Append(m_minimizeView);
m_viewList->Append(m_closeView);
m_viewList->Append(m_repeatView);
m_viewList->Append(m_shuffleView);
m_viewList->Append(m_openView);
m_viewList->Append(m_volumeView);
m_viewList->Append(m_seekView);
m_viewList->Append(m_shuffleIconView);
m_viewList->Append(m_repeatIconView);
m_viewList->Append(m_repeatAllIconView);
m_viewList->Append(m_songTitleView);
m_viewList->Append(m_timeView);
m_viewList->Append(m_volumeInfoView);
m_viewList->Append(m_playlistView);
m_viewList->Append(m_scrollbarView);
m_viewList->Append(m_panelBackingView);
m_viewList->Append(m_addView);
m_viewList->Append(m_deleteView);
m_viewList->Append(m_loadView);
m_viewList->Append(m_saveView);
m_viewList->Append(m_drawerView);
}
void
FreeAmpUI::
LoadBitmaps()
{
HDC hdc, memdc, bufferdc;
int32 numBits;
assert(m_hwnd);
hdc = GetDC(m_hwnd);
memdc = CreateCompatibleDC(hdc);
bufferdc = CreateCompatibleDC(hdc);
numBits = GetDeviceCaps(hdc, BITSPIXEL) * GetDeviceCaps(hdc, PLANES);
if(numBits <= 8)
{
m_playerCanvas = new DIB;
m_playerCanvas->Create(m_width, m_height, 8);
m_bodyBitmap = new DIB;
m_bodyBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_BODY_256));
m_playerCanvas->SetPalette( m_bodyBitmap->Palette(),
m_bodyBitmap->NumberOfPaletteEntries() );
m_playlistBodyBitmap = new DIB;
m_playlistBodyBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_PLAYLIST_BODY_256));
m_playBitmap = new DIB;
m_playBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_PLAY_256));
m_stopBitmap = new DIB;
m_stopBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_STOP_256));
m_pauseBitmap = new DIB;
m_pauseBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_PAUSE_256));
m_nextBitmap = new DIB;
m_nextBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_NEXT_256));
m_lastBitmap = new DIB;
m_lastBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_LAST_256));
m_modeBitmap = new DIB;
m_modeBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_MODE_256));
m_minimizeBitmap = new DIB;
m_minimizeBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_MINIMIZE_256));
m_closeBitmap = new DIB;
m_closeBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_CLOSE_256));
assert(m_closeBitmap->NumberOfPaletteEntries() == m_bodyBitmap->NumberOfPaletteEntries());
assert(!memcmp(m_closeBitmap->Palette(), m_bodyBitmap->Palette(), m_closeBitmap->NumberOfPaletteEntries()));
m_repeatBitmap = new DIB;
m_repeatBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_REPEAT_256));
m_shuffleBitmap = new DIB;
m_shuffleBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_SHUFFLE_256));
m_openBitmap = new DIB;
m_openBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_OPEN_256));
m_volumeDialBitmap = new DIB;
m_volumeDialBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_DIALS_256));
m_seekDialBitmap = new DIB;
m_seekDialBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_DIALS_256));
m_shuffleIconBitmap = new DIB;
m_shuffleIconBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_SHUFFLED_ICON_256));
m_repeatIconBitmap = new DIB;
m_repeatIconBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_REPEAT_ICON_256));
m_repeatAllIconBitmap = new DIB;
m_repeatAllIconBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_REPEAT_ALL_ICON_256));
m_smallFontBitmap = new DIB;
m_smallFontBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_SMALL_FONT_256));
m_largeFontBitmap = new DIB;
m_largeFontBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_BIG_FONT_256));
m_timeBackgroundBitmap = new DIB;
m_timeBackgroundBitmap->Load(g_hinst, MAKEINTRESOURCE(IDB_TIME_BACK_256));
m_drawerBitmap = new DIB;
m_d
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -