将WIN32 API消息处理程序转换为MFC消息映射

时间:2016-01-20 23:33:05

标签: c++ winapi mfc windows-messages

我有一个带有CALLBACK proc函数的工作Windows API应用程序,如下所示:

OnInitialUpdate()

我正在尝试将此功能集成到MFC应用程序中,并执行了以下步骤:

    我在CWnd* pwndBody = GetDlgItem( IDC_EDIT_OUTBOUND_BODY ); ASSERT( pwndBody ); // Send messages to the Control, AA-20/01/2016 // set some text length limit // richeditcrtl = (HWND)GetDlgItem( IDC_EDIT_OUTBOUND_BODY ); pwndBody->PostMessage(EM_LIMITTEXT, (WPARAM)MAX_STRING_LEN - 1, 0); // we need key and mouse events, see WM_NOTIFY pwndBody->PostMessage(EM_SETEVENTMASK, 0, ENM_KEYEVENTS | ENM_MOUSEEVENTS); // misc options pwndBody->PostMessage(EM_SETOPTIONS, ECOOP_OR, ECO_AUTOWORDSELECTION | ECO_SELECTIONBAR); pwndBody->PostMessage(EM_SETZOOM, 64, 52); 函数中的
  1. afx_msg void OnSpellingError( NMHDR * pNotifyStruct, LRESULT * result );
    
  2. 我宣布了一个处理程序:

    void CAMCMVOutboundEmailView::OnSpellingError(NMHDR* pNMHDR, LRESULT* Result) 
    {
         MSGFILTER*  msgf = (MSGFILTER*)pResult;
         spellchecker_process ((HWND)pwndBody, msgf);
    }
    
  3. 定义了处理程序:

    ON_NOTIFY(NM_RCLICK, IDC_EDIT_OUTBOUND_BODY, OnSpellingError);
    
  4. 我在消息地图中提供了一个绑定:

    WM_NOTIFY

    因为我想在收到ON_NOTIFY消息时调用spellchecker_process()函数,就像它在上面的WIN API CALLBACK函数中一样。

  5. 我是MFC的新手,但我知道有些事情是错的,显而易见的是:

    • MFC NM_RCLICK函数的第一个参数应该是什么? (不应该是LPARAM
    • 如何在消息处理程序(OnSpellingError)中获取MSGFILTER参数,因为我需要将其转换为Can not instantiate value of type [simple type, InnerClass] from JSON String; no single-String constructor/factory method (through reference chain: InnerClass)

    总之,我只是想在我的MFC应用程序中实现WIN API函数。感谢

0 个答案:

没有答案