📄 dialog.cpp
字号:
controlRect.top,
controlWidth,
controlHeight - statusbarHeight,
SWP_NOZORDER);
/*int delta = controlRect.right - controlRect.left - oldListViewRect.right - oldListViewRect.left;
controlWidth -= delta;
if(controlWidth < oldListViewRect.right - oldListViewRect.left)
{
int32 oldWidth = 0;
HWND hwnd = m_hPlaylistView;
oldWidth += ListView_GetColumnWidth(hwnd, 0);
oldWidth += ListView_GetColumnWidth(hwnd, 1);
oldWidth += ListView_GetColumnWidth(hwnd, 2);
oldWidth += ListView_GetColumnWidth(hwnd, 3);
oldWidth += ListView_GetColumnWidth(hwnd, 4);
int32 headerResizeAmount = controlWidth - oldWidth;
int32 eachHeaderAmount = headerResizeAmount/3;
int32 titleExtraAmount = headerResizeAmount%3;
int32 width;
if(eachHeaderAmount)
{
width = ListView_GetColumnWidth(m_hPlaylistView, 1);
width += eachHeaderAmount;
ListView_SetColumnWidth(m_hPlaylistView, 1, width);
width = ListView_GetColumnWidth(m_hPlaylistView, 2);
width += eachHeaderAmount;
ListView_SetColumnWidth(m_hPlaylistView, 2, width);
width = ListView_GetColumnWidth(m_hPlaylistView, 3);
width += eachHeaderAmount;
ListView_SetColumnWidth(m_hPlaylistView, 3, width);
}
if(titleExtraAmount)
{
static uint32 lastColumn = 1;
while(titleExtraAmount)
{
width = ListView_GetColumnWidth(m_hPlaylistView, lastColumn);
if(titleExtraAmount > 0)
{
width += 1;
titleExtraAmount--;
}
else
{
width -= 1;
titleExtraAmount++;
}
ListView_SetColumnWidth(m_hPlaylistView, lastColumn, width);
if(++lastColumn > 3)
lastColumn = 1;
}
}
}*/
EndDeferWindowPos(hdwp);
/*GetClientRect(m_hPlaylistView, &controlRect);
controlWidth = controlRect.right - controlRect.left;
if(controlWidth > oldListViewRect.right - oldListViewRect.left)
{
int32 oldWidth = 0;
HWND hwnd = m_hPlaylistView;
oldWidth += ListView_GetColumnWidth(hwnd, 0);
oldWidth += ListView_GetColumnWidth(hwnd, 1);
oldWidth += ListView_GetColumnWidth(hwnd, 2);
oldWidth += ListView_GetColumnWidth(hwnd, 3);
oldWidth += ListView_GetColumnWidth(hwnd, 4);
int32 headerResizeAmount = controlWidth - oldWidth;
int32 eachHeaderAmount = headerResizeAmount/3;
int32 titleExtraAmount = headerResizeAmount%3;
int32 width;
if(eachHeaderAmount)
{
width = ListView_GetColumnWidth(m_hPlaylistView, 1);
width += eachHeaderAmount;
ListView_SetColumnWidth(m_hPlaylistView, 1, width);
width = ListView_GetColumnWidth(m_hPlaylistView, 2);
width += eachHeaderAmount;
ListView_SetColumnWidth(m_hPlaylistView, 2, width);
width = ListView_GetColumnWidth(m_hPlaylistView, 3);
width += eachHeaderAmount;
ListView_SetColumnWidth(m_hPlaylistView, 3, width);
}
if(titleExtraAmount)
{
static uint32 lastColumn = 1;
while(titleExtraAmount)
{
width = ListView_GetColumnWidth(m_hPlaylistView, lastColumn);
if(titleExtraAmount > 0)
{
width += 1;
titleExtraAmount--;
}
else
{
width -= 1;
titleExtraAmount++;
}
ListView_SetColumnWidth(m_hPlaylistView, lastColumn, width);
if(++lastColumn > 3)
lastColumn = 1;
}
}
}*/
}
void MusicBrowserUI::GetMinMaxInfo(MINMAXINFO *pInfo)
{
pInfo->ptMinTrackSize = m_sMinSize;
}
void MusicBrowserUI::SetMinMaxInfo()
{
RECT sLoc, sLoc2;
GetWindowRect(m_hMusicView, &sLoc);
GetWindowRect(m_hPlaylistView, &sLoc2);
//m_iCollapseMoveAmount = sLoc2.left - sLoc.left;
}
void MusicBrowserUI::InitDialog(HWND hWnd)
{
HIMAGELIST hList;
HINSTANCE hinst = (HINSTANCE)GetWindowLong(m_hWnd, GWL_HINSTANCE);
HICON appIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_EXE_ICON));
SetClassLong(m_hWnd, GCL_HICON, (LONG)appIcon);
m_hWnd = hWnd;
m_hMusicView = GetDlgItem(m_hWnd, IDC_MUSICTREE);
m_hPlaylistView = GetDlgItem(m_hWnd, IDC_PLAYLISTBOX);
m_hPlaylistTitle = GetDlgItem(m_hWnd, IDC_PLAYLISTTITLE);
m_hMusicViewTitle = GetDlgItem(m_hWnd, IDC_MUSICCATALOGTEXT);
HBITMAP bmp;
hList = ImageList_Create(16, 16, ILC_COLOR24|ILC_MASK, 10, 0);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_CATALOG));
ImageList_AddMasked(hList, bmp, RGB(255,255,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_PLAYLIST));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ARTIST));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ALBUM));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_TRACK));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ALL));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_UNCATAGORIZED));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_PORTABLE));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_STREAMS));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_WIREDPLANET));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_ICECAST));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_SHOUTCAST));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_BUSY));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_CD));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_FAVORITES));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
TreeView_SetImageList(m_hMusicView, hList, TVSIL_NORMAL);
hList = ImageList_Create(16, 16, ILC_COLOR24|ILC_MASK, 1, 0);
bmp = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_PLAYING));
ImageList_AddMasked(hList, bmp, RGB(255,0,0));
DeleteObject(bmp);
ListView_SetImageList(m_hPlaylistView, hList, LVSIL_SMALL);
SetTitles();
CreateToolbar();
InitTree();
InitList();
// Subclass the listview
// Set the proc address as a property
// of the window so it can get it
SetProp(m_hPlaylistView,
"oldproc",
(HANDLE)GetWindowLong(m_hPlaylistView, GWL_WNDPROC));
SetProp(m_hPlaylistView,
"this",
(HANDLE)this);
// Subclass the window so we can draw it
SetWindowLong(m_hPlaylistView,
GWL_WNDPROC,
(DWORD)::ListViewWndProc);
// Subclass the treeview
// Set the proc address as a property
// of the window so it can get it
SetProp(m_hMusicView,
"oldproc",
(HANDLE)GetWindowLong(m_hMusicView, GWL_WNDPROC));
SetProp(m_hMusicView,
"this",
(HANDLE)this);
// Subclass the window so we can handle multi-select
SetWindowLong(m_hMusicView,
GWL_WNDPROC,
(DWORD)::TreeViewWndProc );
// register our OLE drag and drop crap
OleInitialize(NULL);
int result;
m_playlistDropTarget = new DropTarget(m_hPlaylistView);
//CoLockObjectExternal ((IUnknown*)m_playlistDropTarget, TRUE, TRUE);
result = RegisterDragDrop(m_hPlaylistView, m_playlistDropTarget);
m_hStatus= CreateStatusWindow(WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS,
"", m_hWnd, IDC_STATUS);
RECT rect;
GetClientRect(m_hWnd, &rect);
panes[0] = rect.right - rect.left /*- kControlsWidth*/ - kTimeWidth;
//panes[1] = panes[0] + kControlsWidth;
SendMessage(m_hStatus, SB_SETPARTS, kNumPanes, (LPARAM) panes);
//SendMessage(m_hStatus, SB_SETTEXT, 1|SBT_NOBORDERS , (LPARAM) "");
SendMessage(m_hStatus, SB_SETTEXT, kNumPanes - 1, (LPARAM) "0:00");
GetClientRect(m_hStatus, &rect);
/*CreateWindow("BUTTON",
"button",
WS_VISIBLE|WS_CHILD,
panes[0] + 2,
rect.top + 1,
kControlsWidth - 2,
rect.bottom - rect.top,
m_hStatus,
NULL,
g_hinst,
NULL);*/
UpdateButtonStates();
m_context->target->AcceptEvent(new Event(CMD_QueryPlayerState));
m_sMinSize.x = 500;
m_sMinSize.y = 300;
if(m_pParent == NULL)
{
m_plm->SetActivePlaylist(kPlaylistKey_MasterPlaylist);
}
else if(m_portableDevice)
{
m_plm->SetActivePlaylist(kPlaylistKey_PortablePlaylist);
if(m_plm->IsPortableAvailable(m_portableDevice))
{
vector<PlaylistItem*> items;
m_plm->ReadPortablePlaylist(m_portableDevice, &items);
m_initialCount = items.size();
if(m_initialCount)
m_plm->AddItems(&items);
}
}
else
{
m_plm->SetActivePlaylist(kPlaylistKey_ExternalPlaylist);
if(m_currentListName.size())
LoadPlaylist(m_currentListName.c_str());
}
UpdateTotalTime();
// resize window
char buf[256];
uint32 size = sizeof(buf);
int32 x,y,h,w, s;
m_context->prefs->GetPrefString(kMusicBrowserPositionPref, buf, &size);
sscanf(buf, " %d , %d , %d , %d, %d", &x, &y, &w, &h, &s);
if(x >= 0 && y >= 0 && h >= 0 && w >= 0 && s >= 0 && s < w)
{
int32 screenX, screenY;
screenX = GetSystemMetrics(SM_CXSCREEN);
screenY = GetSystemMetrics(SM_CYSCREEN);
if(x > screenX)
x = 0;
if(y > screenY)
y = 0;
MoveWindow(hWnd, x, y, w, h, TRUE);
/*RECT controlRect;
int32 controlHeight, controlWidth;
GetWindowRect(m_hMusicView, &controlRect);
MapWindowPoints(NULL, m_hWnd, (LPPOINT)&controlRect, 2);
controlHeight = controlRect.bottom - controlRect.top;
controlWidth = controlRect.right - controlRect.left;
MoveWindow(m_hMusicView, controlRect.left,
controlRect.top, s, controlHeight, TRUE);
*/
RECT catalogRect, playlistRect, titleRect;
int32 delta;
GetWindowRect(m_hMusicView, &catalogRect);
GetWindowRect(m_hPlaylistView, &playlistRect);
GetWindowRect(m_hPlaylistTitle, &titleRect);
delta = s - (catalogRect.right - catalogRect.left);
catalogRect.right = catalogRect.left + s;
playlistRect.left = playlistRect.left + delta;
titleRect.left += delta;
MapWindowPoints(NULL, m_hWnd, (LPPOINT)&catalogRect, 2);
MapWindowPoints(NULL, m_hWnd, (LPPOINT)&playlistRect, 2);
MapWindowPoints(NULL, m_hWnd, (LPPOINT)&titleRect, 2);
MoveWindow(m_hMusicView,
catalogRect.left,
catalogRect.top,
(catalogRect.right - catalogRect.left),
catalogRect.bottom - catalogRect.top,
TRUE);
MoveWindow(m_hPlaylistView,
playlistRect.left,
playlistRect.top,
(playlistRect.right - playlistRect.left),
playlistRect.bottom - playlistRect.top,
TRUE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -