小编Dav*_*vid的帖子

mciSendString是否必须具有“ wait”才能听到声音?

我正在尝试使用mci函数编写mp3播放器。(win 7 64bit,vs2010,c ++)

当我尝试播放带有“等待”标志的mp3文件时,我可以听到该文件,但其他所有内容都会卡住,直到文件结束播放为止,如果我删除了“等待”标志,我可以继续工作但听不到任何声音。

这是代码示例:

unsigned long __stdcall PlayThread(void *myParam)
{

    char* nameOfMp3 = (char*)myParam;
    char* cmd = new char[MAX_PATH];
    sprintf(cmd,"open \"%s\" type MPEGvideo alias myFile",nameOfMp3);

    mciSendString(cmd,NULL,0,0);
    mciSendString("play myFile wait",NULL,0,0);//here is the "wait" flag
    mciSendString("close myFile",NULL,0,0);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我删除了对mci推荐返回值的检查,但是我已经对其进行了仔细检查,在两种情况下都可以。

难道我做错了什么?

c++ audio mp3 mci audio-player

3
推荐指数
1
解决办法
1288
查看次数

更改对话框mfc的背景颜色

我正在尝试更改对话框的背景颜色(win 7,vs2010,c ++).我试图捕捉WM_CTLCOLOR,WM_ERASEBKGND并改变颜色.我用这种方式改变背景颜色,但是当窗口完成上传时,颜色恢复到默认状态,但我注意到框架颜色正确.我认为我正在改变窗口,而不是对话框或类似的东西.我用WTL(不是AFX)这样做.

我该怎么办?

c++ user-interface mfc colors

1
推荐指数
2
解决办法
1万
查看次数

更改对话框win32api的背景颜色

我正在尝试更改对话框的背景颜色(win 7,vs2010,c ++).

我试图捕捉WM_CTLCOLOR,WM_ERASEBKGND并改变颜色.我设法只捕获WM_ERASEBKGND消息,但是这样我在调试模式下管理,看到我改变了窗口的背景颜色,但是当dialogBox完成上传本身时,颜色被DialogBox的defualt灰色溢出. .

我正在使用CreateDialogParam函数创建DialogBox.

case WM_ERASEBKGND:
{
   HBRUSH brush;
   RECT rect;
   brush = CreateSolidBrush(RGB(255,0,0));
   SelectObject((HDC)wParam,brush);
   GetClientRect(m_hDlg,&rect)//m_hDlg is HWND type
   Rectangle((HDC)wParam,rect.left,rect.top,rect.right,rect.bottom);
   break;
}
Run Code Online (Sandbox Code Playgroud)

我试着使用这个功能:

SetBkMode((HDC)wParam,TRANSPARENTE);
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.

我该怎么办?

c++ winapi

1
推荐指数
1
解决办法
8460
查看次数

标签 统计

c++ ×3

audio ×1

audio-player ×1

colors ×1

mci ×1

mfc ×1

mp3 ×1

user-interface ×1

winapi ×1