win32控制台程序,多字节字符集。
源码:
#include <graphics.h>
#pragma comment(lib,"Winmm.lib")
int main()
{
char Mci_open[MAX_PATH] = { 0 };
char Mci_set[MAX_PATH] = { 0 };
HWND hWnd = initgraph(1035,515);
sprintf(Mci_open, "open \"D:\\PR输出\\Dasiy.wmv\" alias video parent %u style CHILD", hWnd);//打开并设置在easyx窗口下播放
sprintf(Mci_set, "put myvideo window at %d %d %d %d", 0, 0, 1035, 515);
mciSendString(Mci_open, NULL, 0, NULL);
mciSendString(Mci_set, NULL, 0, NULL);
mciSendString("play video wait", NULL, 0, NULL);
return 0;
}
最开始尝试的是h264编码的avi格式,有视频画面无声音,且画面闪烁严重。
然后尝试将播放设置改为直接创建新窗口,结果是视频画面正常无闪烁,依旧没声音。
生成的新窗口无法操作,又改回easyx下播放。
之后看到贴吧里说要使用Cinepak Codec编码的avi,但是我的Pr没有这个编码器,我选择导出avi(未压缩),v210编码器无画面但声音正常,UYVY编码器有画面且声音正常,但闪烁依旧严重。
然后我尝试使用windows media即wmv格式时,有声音有画面,且画面闪烁有明显改善,从avi格式下的频闪变成约半秒一次黑屏。
而且我发现当鼠标在窗口上方标题栏长按时,不会再有闪烁,视频播放正常。
猜测是easyx创建窗口的消息机制造成的闪烁。
请问如何解决?