一个极为奇怪的问题,高手帮我看看 - C++ Builder / Windows SDK/API
前面的一大堆都不重要,重要的是case WM_HSCROLL这个消息段。
我做了一个音乐播放器添加调节音量的功能,但有一个非常奇怪的问题,就是在我拖动滑块的时候,如果拖到某个地方,再拖回起始位置,再拖->再到起始位置->再拖->再到起始位置,一直往复,声音会越来越小,直到消失,为什么,为什么,为什么啊啊啊啊啊啊啊,我猜想可能是拖到起始位置是音量总大小发生了变化,但知识匮乏,不知每次往复到底会减小多少,他的总大小从某个位置拖回来是怎么计算的?高手解答。代码如下。我就少复制一点了,看着头晕。
#include "stdafx.h"
#include "音乐播放器.h"
static TCHAR quanju[MAX_PATH];
static int i1;
#pragma comment(lib,"Winmm.lib")
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
DialogBox(hInstance,MAKEINTRESOURCE(1),NULL,hanshu);
return 0;
}
BOOL CALLBACK hanshu(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND hwnd=GetDlgItem(hdlg,gundong);
OPENFILENAME ofn;
char szFile[256];
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = TEXT('\0');
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0mp3\0*.mp3\0");
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.hwndOwner = hdlg;
ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
switch(message)
{
case WM_HSCROLL:
{
TCHAR i2[256];
TCHAR i3[256];
TCHAR i4[256];
TCHAR i5[256];
int i;
int yinliang=SendMessage(GetDlgItem(hdlg,gundong),TBM_GETPOS,0,0);
GetShortPathName(quanju,i2,sizeof(i2));
if(yinliang==0)
{
wsprintf(i3,"status %s volume",i2);
mciSendString(i3,i4, sizeof(i4), 0 );
i1=atoi(i4);
i=i1-yinliang;
wsprintf(i5,"setaudio %s volume to %i",i2,i);
mciSendString(i5,"",0,NULL);
}
else
{
i=i1-yinliang;
wsprintf(i5,"setaudio %s volume to %i",i2,i);
mciSendString(i5,"",0,NULL);
}
}
break;
case WM_INITDIALOG:
SendMessage(GetDlgItem(hdlg,gundong),TBM_SETRANGEMIN,(WPARAM)TRUE,0);
SendMessage(GetDlgItem(hdlg,gundong),TBM_SETRANGEMAX,(WPARAM)TRUE,1000);
SendMessage(GetDlgItem(hdlg,gundong),TBM_SETPOS,(WPARAM)TRUE,0);
break;
[解决办法]
好,什么问题?
[解决办法]
提供解决方法出来。
[解决办法]
#include "音乐播放器.h"