@@ -66,6 +66,7 @@ BOOL PlayerDlgOnInitDialog(HWND hDlg, HWND hWndFocus, LPARAM lParam)
66
66
SetWindowLongPtr (hDlg, DWLP_USER, (LONG_PTR) pData);
67
67
68
68
const HWND hPosition = GetDlgItem (hDlg, IDC_POSITION);
69
+ const HWND hVolume = GetDlgItem (hDlg, IDC_VOLUME);
69
70
70
71
GetWindowText (hDlg, pData->strTitle , ARRAYSIZE (pData->strTitle ));
71
72
@@ -80,6 +81,11 @@ BOOL PlayerDlgOnInitDialog(HWND hDlg, HWND hWndFocus, LPARAM lParam)
80
81
TrackBar_SetTicFreq (hPosition, 60 );
81
82
TrackBar_SetLineSize (hPosition, 10 );
82
83
TrackBar_SetPageSize (hPosition, 60 );
84
+ TrackBar_SetTicFreq (hVolume, 10 );
85
+ TrackBar_SetLineSize (hVolume, 1 );
86
+ TrackBar_SetPageSize (hVolume, 10 );
87
+ TrackBar_SetRange (hVolume, 0 , 100 );
88
+ TrackBar_SetPos (hVolume, 100 - 100 );
83
89
84
90
for (int i = 1 ; i < __argc; ++i)
85
91
{
@@ -199,6 +205,7 @@ void PlayerDlgOnAPOpen(HWND hDlg, LPCTSTR pFileName)
199
205
{
200
206
PlayerDlgData* pData = (PlayerDlgData*) GetWindowLongPtr (hDlg, DWLP_USER);
201
207
const HWND hPosition = GetDlgItem (hDlg, IDC_POSITION);
208
+ const HWND hVolume = GetDlgItem (hDlg, IDC_VOLUME);
202
209
const HWND hBegin = GetDlgItem (hDlg, IDC_BEGIN);
203
210
const HWND hEnd = GetDlgItem (hDlg, IDC_END);
204
211
@@ -215,6 +222,9 @@ void PlayerDlgOnAPOpen(HWND hDlg, LPCTSTR pFileName)
215
222
FormatTime (dwLength, buf, ARRAYSIZE (buf));
216
223
SetWindowText (hEnd, buf);
217
224
225
+ DWORD dwVolume = 100 - TrackBar_GetPos (hVolume);
226
+ MciSetVolume (hDlg, pData->wDeviceID , dwVolume * 10 );
227
+
218
228
MciPlay (hDlg, pData->wDeviceID );
219
229
}
220
230
else
@@ -235,10 +245,12 @@ BOOL PlayerDlgOnNotify(HWND hDlg, int id, LPNMHDR pNmHdr)
235
245
{
236
246
PlayerDlgData* pData = (PlayerDlgData*) GetWindowLongPtr (hDlg, DWLP_USER);
237
247
const HWND hPosition = GetDlgItem (hDlg, IDC_POSITION);
248
+ const HWND hVolume = GetDlgItem (hDlg, IDC_VOLUME);
238
249
const HWND hBegin = GetDlgItem (hDlg, IDC_BEGIN);
239
250
240
- if (id == IDC_POSITION )
251
+ switch (id)
241
252
{
253
+ case IDC_POSITION:
242
254
switch (pNmHdr->code )
243
255
{
244
256
case NM_RELEASEDCAPTURE:
@@ -281,14 +293,47 @@ BOOL PlayerDlgOnNotify(HWND hDlg, int id, LPNMHDR pNmHdr)
281
293
break ;
282
294
}
283
295
return TRUE ;
284
- }
285
- else
296
+
297
+ case IDC_VOLUME:
298
+ switch (pNmHdr->code )
299
+ {
300
+ case NM_RELEASEDCAPTURE:
301
+ if (pData->wDeviceID != 0 )
302
+ {
303
+ DWORD dwVolume = 100 - TrackBar_GetPos (hVolume);
304
+ MciSetVolume (hDlg, pData->wDeviceID , dwVolume * 10 );
305
+ }
306
+ break ;
307
+
308
+ case TRBN_THUMBPOSCHANGING:
309
+ if (pData->wDeviceID != 0 )
310
+ {
311
+ const NMTRBTHUMBPOSCHANGING* pPosChanging = (NMTRBTHUMBPOSCHANGING*) pNmHdr;
312
+ DWORD dwPos = 100 - pPosChanging->dwPos ;
313
+ if (dwPos > (MAXDWORD / 2 )) dwPos = 0 ;
314
+ if (dwPos > 100 ) dwPos = 100 ;
315
+ if (pPosChanging->nReason == TB_THUMBTRACK)
316
+ {
317
+ MciSetVolume (hDlg, pData->wDeviceID , dwPos * 10 );
318
+ }
319
+ else if (pPosChanging->nReason != TB_THUMBPOSITION && pPosChanging->nReason != TB_ENDTRACK)
320
+ {
321
+ MciSetVolume (hDlg, pData->wDeviceID , dwPos * 10 );
322
+ }
323
+ }
324
+ break ;
325
+ }
326
+ return TRUE ;
327
+
328
+ default :
286
329
return FALSE ;
330
+ }
287
331
}
288
332
289
333
void PlayerDlgOnAppCommand (HWND hDlg, HWND hChild, UINT cmd, UINT uDevice, DWORD dwKeys)
290
334
{
291
335
PlayerDlgData* pData = (PlayerDlgData*) GetWindowLongPtr (hDlg, DWLP_USER);
336
+ const HWND hVolume = GetDlgItem (hDlg, IDC_VOLUME);
292
337
switch (cmd)
293
338
{
294
339
case APPCOMMAND_MEDIA_PLAY:
@@ -306,6 +351,24 @@ void PlayerDlgOnAppCommand(HWND hDlg, HWND hChild, UINT cmd, UINT uDevice, DWORD
306
351
MciPlay (hDlg, pData->wDeviceID );
307
352
}
308
353
break ;
354
+ case APPCOMMAND_VOLUME_DOWN:
355
+ {
356
+ DWORD dwVolume = 100 - TrackBar_GetPos (hVolume);
357
+ dwVolume -= 10 ;
358
+ if (dwVolume > (DWORD) -100 ) dwVolume = 0 ;
359
+ MciSetVolume (hDlg, pData->wDeviceID , dwVolume * 10 );
360
+ TrackBar_SetPos (hVolume, 100 - dwVolume);
361
+ }
362
+ break ;
363
+ case APPCOMMAND_VOLUME_UP:
364
+ {
365
+ DWORD dwVolume = 100 - TrackBar_GetPos (hVolume);
366
+ dwVolume += 10 ;
367
+ if (dwVolume > 100 ) dwVolume = 100 ;
368
+ MciSetVolume (hDlg, pData->wDeviceID , dwVolume * 10 );
369
+ TrackBar_SetPos (hVolume, 100 - dwVolume);
370
+ }
371
+ break ;
309
372
}
310
373
}
311
374
0 commit comments