?? winmain.cpp
字號(hào):
if(LOWORD(wParam) >= IDM_DEVICES && LOWORD(wParam) < (IDM_DEVICES + nNumberOfDevices))
{
CheckMenuItem(hPopup, IDM_DEVICES + CurrentDevice, MF_BYCOMMAND | MF_UNCHECKED);
CheckMenuItem(hPopup, LOWORD(wParam), MF_BYCOMMAND | MF_CHECKED);
if(Playing)
{
if(MessageBox(hWnd, "Are you sure you wish to stop current playing and change device?", "CD Message", MB_YESNO | MB_ICONQUESTION) == IDYES)
{
CDAudio_Stop();
}
else
{
break;
}
}
CDAudio_Shutdown();
CurrentDevice = (LOWORD(wParam) - IDM_DEVICES);
CDAudio_Init(nCurrentDevice[CurrentDevice]);
char* error;
if (CDAudio_CheckValidity(error) != 0)
{
char szTmp[300];
HMENU hSubMenu = GetSubMenu(hPopup, 0);
RemoveMenu(hSubMenu, 0, MF_BYPOSITION);
for(int Loop1 = 0; Loop1 < 100; Loop1++)
{
RemoveMenu(hSubMenu, 0, MF_BYPOSITION);
}
int nFlags = MF_BYCOMMAND | MF_STRING;
sprintf(szTmp, "No Tracks Available", 1, 1);
InsertMenu(hSubMenu, 0xFFFFFFFF, nFlags, (IDM_TRACKS), szTmp);
EnableMenuItem(hSubMenu, (IDM_TRACKS), MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
cdValid = false;
EnableWindow(bPlay, false);
EnableWindow(bStop, false);
EnableWindow(bNext, false);
EnableWindow(bPrevious, false);
EnableWindow(bPause, false);
EnableWindow(bSkipF, false);
EnableWindow(bSkipB, false);
}
else
{
InitTracksMenu();
cdValid = true;
EnableWindow(bPlay, true);
EnableWindow(bStop, true);
EnableWindow(bNext, true);
EnableWindow(bPrevious, true);
EnableWindow(bPause, true);
EnableWindow(bSkipF, true);
EnableWindow(bSkipB, true);
}
killTimer = true;
}
switch(wParam)
{
case ID_FILE_SHOWTI:
{
if(!Minimized)
{
if(Hidden)
{
Hidden = !Hidden;
ShowTrayIcon();
ModifyMenu(hPopup, ID_FILE_SHOWTI, MF_BYCOMMAND | MF_STRING, ID_FILE_SHOWTI, "Hide Tray Icon");
}
else
{
Hidden = !Hidden;
HideTrayIcon();
ModifyMenu(hPopup, ID_FILE_SHOWTI, MF_BYCOMMAND | MF_STRING, ID_FILE_SHOWTI, "Show Tray Icon");
}
}
break;
}
case IDC_MENU:
{
POINT mPoint;
GetCursorPos(&mPoint);
SetForegroundWindow(hWnd);
TrackPopupMenu(hPopup, TPM_RIGHTBUTTON, mPoint.x, mPoint.y, 0, hWnd, NULL);
break;
}
case IDC_LOAD:
{
if(!Open)
{
CDAudio_Eject();
Open = !Open;
EnableWindow(bPlay, false);
EnableWindow(bStop, false);
EnableWindow(bNext, false);
EnableWindow(bPrevious, false);
EnableWindow(bPause, false);
EnableWindow(bSkipF, false);
EnableWindow(bSkipB, false);
}
else
{
CDAudio_CloseDoor();
Open = !Open;
char* error;
int cdError = CDAudio_CheckValidity(error);
if(cdError == 2)
{
// Unexpected Error Occured
MessageBox(hWnd, error, "Error", NULL);
}
else if(cdError = 1)
{
// Not a valid CD
}
else
{
// All systems go, Audio CD inserted.
EnableWindow(bPlay, true);
EnableWindow(bStop, true);
EnableWindow(bNext, true);
EnableWindow(bPrevious, true);
EnableWindow(bPause, true);
EnableWindow(bSkipF, true);
EnableWindow(bSkipB, true);
}
}
break;
}
case ID_FILE_EXIT:
if(Playing)
{
if(MessageBox(hWnd, "Are you sure you want to exit?", "Exit CD Player?", MB_YESNO | MB_ICONQUESTION)==IDYES)
PostQuitMessage(0);
}
else
{
PostQuitMessage(0);
}
break;
case IDC_PLAY:
Playing = true;
EnableMenuItem(hPopup, ID_FILE_PLAY, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hPopup, ID_FILE_STOP, MF_BYCOMMAND | MF_ENABLED);
EnableMenuItem(hPopup, ID_FILE_PAUSE, MF_BYCOMMAND | MF_ENABLED);
EnableWindow(sProgress, true);
if(!Paused)
{
TCHAR Message[30];
tMin = 0;
tSec = -1;
Pos = 0;
trackLength = CDGetTrackLength(Track, TrackLength);
SendMessage(sProgress, SBM_SETRANGE, 0, trackLength);
SendMessage(sProgress, SBM_SETRANGEREDRAW, 0, trackLength);
SendMessage(sProgress, SBM_SETPOS, 0, true);
if(CDAudio_Play(Track, 0, 0, true, hWnd) != 0)
{
EnableWindow(bPlay, false);
EnableWindow(bStop, false);
EnableWindow(bNext, false);
EnableWindow(bPrevious, false);
EnableWindow(bPause, false);
EnableWindow(bSkipF, false);
EnableWindow(bSkipB, false);
break;
}
}
else
{
Paused = false;
if(CDAudio_Play(Track, tMin, tSec, true, hWnd) == 1)
{
break;
}
}
SetTrayIconIcon(iPlay);
SetTrayIconCaption("CD Player - Playing");
if(maxTrack != CDAudio_GetNumTracks())
{
maxTrack = CDAudio_GetNumTracks();
SetupMenu();
}
SetTimer(hWnd, 1, 1000, NULL);
killTimer = false;
break;
case IDC_STOP:
EnableMenuItem(hPopup, ID_FILE_STOP, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hPopup, ID_FILE_PAUSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hPopup, ID_FILE_PLAY, MF_BYCOMMAND | MF_ENABLED);
TCHAR Message[30];
if(trackLength%60 < 10)
{
wsprintf(Message, "Time: 0:00/%d:0%d", pzMin, pzSec);
}
else
{
wsprintf(Message, "Time: 0:00/%d:%d", pzMin, pzSec);
}
SendMessage(TimeInfo, WM_SETTEXT, 0, (LPARAM)Message);
SendMessage(sProgress, SBM_SETPOS, 0, true);
killTimer = true;
if(Paused)
{
Paused = false;
}
if(Playing)
{
SetTrayIconIcon(iStop);
SetTrayIconCaption("CD Player - Stopped");
CDAudio_Stop();
Playing = false;
}
break;
case IDC_NEXT:
{
TCHAR Message[20];
SetTrayIconCaption("CD Player - Searching");
Track++;
if(Track > maxTrack)
{
Track = 1;
}
if(Playing)
{
killTimer = true;
SendMessage(hWnd, WM_COMMAND, IDC_PLAY, NULL);
SetTrayIconCaption("CD Player - Playing");
}
wsprintf(Message, "Track: %d", Track);
SendMessage(TrackInfo, WM_SETTEXT, 0, (LPARAM)Message);
break;
}
case IDC_PREVIOUS:
{
TCHAR Message[20];
SetTrayIconCaption("CD Player - Searching");
Track--;
if(Track < 1)
{
Track = maxTrack;
}
if(Playing)
{
killTimer = true;
SendMessage(hWnd, WM_COMMAND, IDC_PLAY, NULL);
}
SetTrayIconCaption("CD Player - Playing");
wsprintf(Message, "Track: %d", Track);
SendMessage(TrackInfo, WM_SETTEXT, 0, (LPARAM)Message);
break;
}
case IDC_PAUSE:
EnableMenuItem(hPopup, ID_FILE_PAUSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hPopup, ID_FILE_PLAY, MF_BYCOMMAND | MF_ENABLED);
EnableMenuItem(hPopup, ID_FILE_STOP, MF_BYCOMMAND | MF_ENABLED);
if(Playing)
{
killTimer = true;
Paused = true;
SetTrayIconIcon(iPause);
SetTrayIconCaption("CD Player - Paused");
CDAudio_Pause();
}
break;
case IDC_MINIMIZE:
if(Hidden)
{
ShowTrayIcon();
}
if(!Minimized)
{
EnableMenuItem(hPopup, ID_FILE_SHOWTI, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
Minimized = !Minimized;
ShowWindow(hWnd, SW_HIDE);
ModifyMenu(hPopup, ID_FILE_MINIMIZE, MF_BYCOMMAND | MF_STRING, ID_FILE_MINIMIZE, "Restore");
}
else
{
EnableMenuItem(hPopup, ID_FILE_SHOWTI, MF_BYCOMMAND | MF_ENABLED);
Minimized = !Minimized;
ShowWindow(hWnd, SW_SHOW);
ModifyMenu(hPopup, ID_FILE_MINIMIZE, MF_BYCOMMAND | MF_STRING, ID_FILE_MINIMIZE, "Minimize");
}
break;
case IDC_SKIPF:
Pos += 10;
tSec += 10;
if(tSec >= 60)
{
tMin++;
tSec = tSec - 60;
}
SetTrayIconCaption("CD Player - Seeking Forward");
CDAudio_Play(Track, tMin, tSec, true, hWnd);
break;
case IDC_SKIPB:
Pos -= 10;
tSec -= 10;
if(tSec < 0 && tMin > 0)
{
tSec = 59;
tMin--;
}
else if(tSec < 0 && tMin <= 0)
{
tSec = 0;
tMin = 0;
}
SetTrayIconCaption("CD Player - Seeking Backward");
CDAudio_Play(Track, tMin, tSec, true, hWnd);
tSec = -1;
break;
}
break;
case WM_KEYUP:
switch(LOWORD(wParam))
{
case VK_B:
SendMessage(hWnd, WM_COMMAND, IDC_PREVIOUS, NULL);
break;
case VK_E:
SendMessage(hWnd, WM_COMMAND, IDC_LOAD, NULL);
break;
case VK_N:
SendMessage(hWnd, WM_COMMAND, IDC_NEXT, NULL);
break;
case VK_P:
SendMessage(hWnd, WM_COMMAND, IDC_PLAY, NULL);
break;
case VK_S:
SendMessage(hWnd, WM_COMMAND, IDC_STOP, NULL);
break;
}
break;
case WM_KEYDOWN:
switch(LOWORD(wParam))
{
case VK_LEFT:
if(Playing)
{
Pos -= 10;
if(Pos < 0)
{
Pos = 0;
}
tMin = Pos / 60;
tSec = Pos % 60;
SendMessage(sProgress, SBM_SETPOS, Pos, true);
CDAudio_Play(Track, tMin, tSec, true, hWnd);
}
break;
case VK_RIGHT:
if(Playing)
{
Pos += 10;
if(Pos < 0)
{
Pos = 0;
}
tMin = Pos / 60;
tSec = Pos % 60;
SendMessage(sProgress, SBM_SETPOS, Pos, true);
CDAudio_Play(Track, tMin, tSec, true, hWnd);
}
break;
case VK_ADD:
cdVolume += 5;
if(cdVolume > 100)
{
cdVolume = 100;
}
CDVolume.SetVolume(cdVolume, cdVolume);
break;
case VK_SUBTRACT:
cdVolume -= 5;
if(cdVolume < 0)
{
cdVolume = 0;
}
CDVolume.SetVolume(cdVolume, cdVolume);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, Msg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
WNDCLASS wcl;
HBITMAP hBackground = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BACKGROUND));
HBRUSH Background = CreatePatternBrush(hBackground);
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
wcl.hbrBackground = Background;
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
wcl.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_MAIN_ICON));
wcl.hInstance = hInstance;
wcl.lpfnWndProc = MsgProc;
wcl.lpszClassName = ClassName;
wcl.lpszMenuName = NULL;
wcl.style = CS_HREDRAW | CS_VREDRAW;
if(!RegisterClass(&wcl))
{
MessageBox(NULL, "Unable to Register Window Class", "Fatal Error", MB_ICONSTOP);
return 0;
}
g_hInst = hInstance;
DWORD WindowStyle = WS_OVERLAPPED;
HWND phWnd = CreateWindow(ClassName, "CD Player", WindowStyle, 0, 0, 320, 280, NULL, NULL, hInstance, NULL);
HWND hWnd = CreateWindow(ClassName, "CD Player", WindowStyle, 160, 140, /*(GetSystemMetrics(SM_CXSCREEN)/2)-160, (GetSystemMetrics(SM_CYSCREEN)/2)-140, */320, 280, phWnd, NULL, hInstance, NULL);
if(hWnd == NULL)
{
MessageBox(NULL, "Unable to Create Window", "Fatal Error", MB_ICONSTOP);
return 0;
}
g_hWnd = hWnd;
CreateTrayIcon(hWnd, hInstance);
SetupCD();
EnableMenuItem(hPopup, ID_FILE_STOP, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
EnableMenuItem(hPopup, ID_FILE_PAUSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
SetTrayIconCaption("CD Player - Stopped");
maxTrack = CDAudio_GetNumTracks();
SetupMenu();
HRGN hRegion2 = CreateEllipticRgn (0, 0, 320, 280);
SetWindowRgn (hWnd, hRegion2, 1);
ShowWindow(hWnd, SW_SHOW);
CDVolume.InitVolumeControl(hWnd);
CDVolume.GetVolume(cdVolume, cdVolume);
MSG Msg;
while(Msg.message != WM_QUIT)
{
if(PeekMessage(&Msg, NULL, NULL, NULL, PM_REMOVE))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
}
KillTrayIcon();
if(Playing == true)
{
CDAudio_Stop();
}
CDAudio_Shutdown();
UnregisterClass(ClassName, hInstance);
DestroyWindow(phWnd);
DestroyWindow(hWnd);
DestroyWindow(sProgress);
DestroyWindow(TrackInfo);
DestroyWindow(TimeInfo);
DestroyWindow(lTracks);
DestroyWindow(lDevices);
DestroyWindow(Tracks);
DestroyWindow(Devices);
DestroyMenu(hMenu);
DestroyMenu(hPopup);
DestroyIcon(iPlay);
DestroyIcon(iStop);
DestroyIcon(iPause);
DestroyIcon(TrayIcon);
return 1;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -