2010-04-13 68 views
0

我正在使用WinForms,並試圖讓SetNotifyWindowMessage()向WndProc發送消息,但它不這樣做。爲什麼SAPI的ISpNotifySource :: SetNotifyWindowMessage()將通知發送給我的WndProc()?

函數調用:

HRESULT initSAPI(HWND hWnd) 
{ 
    ... 
    if(FAILED(g_cpRecoCtxt->SetNotifyWindowMessage(hWnd, WM_RECOEVENT, 0, 0))) 
    MessageBoxW(hWnd, L"Error sending window message", L"SAPI Initialization Error", 0); 
    ... 
} 

WndProc中:

LRESULT WndProc (HWND hWnd, UINT message, WPARAM wparam, LPARAM lparam) 
{ 
    case WM_RECOEVENT: 
     ProcessRecoEvent(hWnd); 
     break; 
    default: 
     return DefWindowProc(hWnd, message, wParam, lParam); 
} 

注:initSAPI()被調用鼠標點擊事件。

回答

0

你有沒有叫ISpRecoContext::SetInterest? SetNotifyWindowMessage指定發生事件時要執行的操作,但不指定要偵聽的事件。

+0

是的,我已將興趣設置爲「SPEI_RECOGNITION」。問題是,事件發生時,它沒有按照要求做的事情做。 – manuel 2010-04-15 03:25:46

+0

您使用的是inproc還是共享識別器?你必須爲inproc識別器(特別是設置引擎)做更多的初始化操作,如果你不設置引擎,SAPI不會給你一個錯誤代碼,但它也不會做任何識別。 – 2010-04-15 16:14:50

+0

我正在使用共享識別器。我已經完成了引擎,上下文,語法和規則設置。你怎麼看? – manuel 2010-04-19 04:28:58

相關問題