向各位高手请教:同一个消息在两个窗体上都作了映射,是否会了问题?
首先大致说一下我的程序思路:
我要在程序主窗体启动时循环播放一段MIDI音乐,当打开另一个窗体时循环播放另一段MIDI音乐,由于要循环播放,因此对MM_MCINOTIFY进行了消息映射。
class TMainForm : public TForm
{
__published: // IDE-managed Components
......
private: // User declarations
MCIDEVICEID m_wDeviceID;
MCI_PLAY_PARMS PlayParms;
void __fastcall CycleRelay(TMessage Message);
public: // User declarations
__fastcall TMainForm(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_MCINOTIFY,TMessage,CycleRelay);//进行了消息映射
END_MESSAGE_MAP(TForm);
};
//在另一窗体Question也有同样的代码
class TQuestion : public TForm
{
__published: // IDE-managed Components
......
private: // User declarations
MCIDEVICEID m_wDeviceID;
MCI_PLAY_PARMS PlayParms;
void __fastcall CycleRelay(TMessage Message);
public: // User declarations
__fastcall TMainForm(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_MCINOTIFY,TMessage,CycleRelay);//进行了消息映射
END_MESSAGE_MAP(TForm);
};
问题是当我刚进了程序时,可以播放主窗体的背景音乐,进入Question窗体时也可以正常播放背景音乐。但当我退出Question窗体时无论如何都不能再播放主窗体的背景音乐了。因此怀疑是我对同一个消息进行了两次映射造成的。
提出如下:
1、如果对同一个消息在两个窗体里都作了映射,如何做到在不同的窗体对同一个消息做不同的处理
2、如果不能解决上面的问题,如何做到我开启第二个窗体进播放另一段MIDI音乐。