一个关于触发自定义消息的问题,希望熟悉mfc的兄弟们帮忙看看

时间:2022-04-04 20:37:31
我用mocrosoft speech sdk5.1和mfc写一个语音识别的程序,可是程序要在有声音的时候触发事件来识别语音,我在程序里怎样才能定义和触发这个事件呢
帮我举个例子,谢谢了

10 个解决方案

#1


使用VC如何处理自定义消息
 
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,
ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 
下面是增加自定义消息的步骤: 
第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消
息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。 
第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。 
LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) 

// TODO: 处理用户自定义消息 
... 
return 0; 

第三步:在类头文件的AFX_MSG块中说明消息处理函数: 
class CMainFrame:public CMDIFrameWnd 

... 
// 一般消息映射函数 
protected: 
// {{AFX_MSG(CMainFrame) 
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
afx_msg void OnTimer(UINT nIDEvent); 
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 

第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消
息处理函数中。 
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) 
//{{AFX_MSG_MAP(CMainFrame) 
ON_WM_CREATE() 
ON_WM_TIMER() 
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
如果用户需要一个整个系统唯一的消息,可以调用SDK函数
RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE
宏指令,其余步骤同上。 




 
 
 
 
 

#2


使用VC如何处理自定义消息
 
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,
ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 
下面是增加自定义消息的步骤: 
第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消
息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。 
第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。 
LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) 

// TODO: 处理用户自定义消息 
... 
return 0; 

第三步:在类头文件的AFX_MSG块中说明消息处理函数: 
class CMainFrame:public CMDIFrameWnd 

... 
// 一般消息映射函数 
protected: 
// {{AFX_MSG(CMainFrame) 
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
afx_msg void OnTimer(UINT nIDEvent); 
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 

第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消
息处理函数中。 
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) 
//{{AFX_MSG_MAP(CMainFrame) 
ON_WM_CREATE() 
ON_WM_TIMER() 
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
如果用户需要一个整个系统唯一的消息,可以调用SDK函数
RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE
宏指令,其余步骤同上。 




 
 
 
 
 

#3


florist2000(善良的石头),你好!我想问你一个问题:你的水平如此之高,你什么学历,工作几年,月薪多少? 

#4


使用自定义消息,然后在这个响应这个消息的函数进行自己的处理。在需要的时候发送这个消息就可以了。

#5


to : dandaowangzi(西点浪子) 
我水平不高,小混混而已
西北工业大学的研究生,以前不学电脑,现在学.
做过四年的兼职,没有正式工作过,公司是换过不少,但是水平却上不去.
薪水阿,你的一半都比不上啦,呵呵

#6


florist2000(善良的石头):
大哥可真是谦虚,我也是研究生,不过刚刚上了半年。
想利用寒假学点东西,明年开学找份兼职。
请给我一些学习和找工作方面的建议。

#7


可是怎么触发这个事件呢
比如说,我希望有响声的时候触发这个事件
怎么办?

#8


to sunnnn(sss) sendmessage(...)就是句柄参数就是处理消息的窗口句柄

to dandaowangzi(西点浪子) 
随便学点东西吧,看你现在学VC,那就学VC吧,编程大致都差不多的
快速开发工具都很好用.
不过希望多学习原理基础的东西

#9


florist2000(善良的石头):
多谢!

#10


g z g z

#1


使用VC如何处理自定义消息
 
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,
ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 
下面是增加自定义消息的步骤: 
第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消
息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。 
第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。 
LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) 

// TODO: 处理用户自定义消息 
... 
return 0; 

第三步:在类头文件的AFX_MSG块中说明消息处理函数: 
class CMainFrame:public CMDIFrameWnd 

... 
// 一般消息映射函数 
protected: 
// {{AFX_MSG(CMainFrame) 
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
afx_msg void OnTimer(UINT nIDEvent); 
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 

第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消
息处理函数中。 
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) 
//{{AFX_MSG_MAP(CMainFrame) 
ON_WM_CREATE() 
ON_WM_TIMER() 
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
如果用户需要一个整个系统唯一的消息,可以调用SDK函数
RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE
宏指令,其余步骤同上。 




 
 
 
 
 

#2


使用VC如何处理自定义消息
 
ClassWizard不允许增加用户自定义消息,所以你必须手工输入。输入后,
ClassWizard就可以象处理其它消息一样处理你自定义的消息了。 
下面是增加自定义消息的步骤: 
第一步:定义消息。开发Windows95应用程序时,Microsoft推荐用户自定义消
息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。 
第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。 
LPESULT CMainFrame::OnMyMessage(WPARAM wParam, LPARAM lParam) 

// TODO: 处理用户自定义消息 
... 
return 0; 

第三步:在类头文件的AFX_MSG块中说明消息处理函数: 
class CMainFrame:public CMDIFrameWnd 

... 
// 一般消息映射函数 
protected: 
// {{AFX_MSG(CMainFrame) 
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); 
afx_msg void OnTimer(UINT nIDEvent); 
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 
//}}AFX_MSG 
DECLARE_MESSAGE_MAP() 

第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消
息处理函数中。 
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) 
//{{AFX_MSG_MAP(CMainFrame) 
ON_WM_CREATE() 
ON_WM_TIMER() 
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage) 
//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
如果用户需要一个整个系统唯一的消息,可以调用SDK函数
RegisterWindowMessage并使用ON_REGISTER_MESSAGE宏指令取代ON_MESSAGE
宏指令,其余步骤同上。 




 
 
 
 
 

#3


florist2000(善良的石头),你好!我想问你一个问题:你的水平如此之高,你什么学历,工作几年,月薪多少? 

#4


使用自定义消息,然后在这个响应这个消息的函数进行自己的处理。在需要的时候发送这个消息就可以了。

#5


to : dandaowangzi(西点浪子) 
我水平不高,小混混而已
西北工业大学的研究生,以前不学电脑,现在学.
做过四年的兼职,没有正式工作过,公司是换过不少,但是水平却上不去.
薪水阿,你的一半都比不上啦,呵呵

#6


florist2000(善良的石头):
大哥可真是谦虚,我也是研究生,不过刚刚上了半年。
想利用寒假学点东西,明年开学找份兼职。
请给我一些学习和找工作方面的建议。

#7


可是怎么触发这个事件呢
比如说,我希望有响声的时候触发这个事件
怎么办?

#8


to sunnnn(sss) sendmessage(...)就是句柄参数就是处理消息的窗口句柄

to dandaowangzi(西点浪子) 
随便学点东西吧,看你现在学VC,那就学VC吧,编程大致都差不多的
快速开发工具都很好用.
不过希望多学习原理基础的东西

#9


florist2000(善良的石头):
多谢!

#10


g z g z