我有一个带有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);
函数中的:
afx_msg void OnSpellingError( NMHDR * pNotifyStruct, LRESULT * result );
我宣布了一个处理程序:
void CAMCMVOutboundEmailView::OnSpellingError(NMHDR* pNMHDR, LRESULT* Result)
{
MSGFILTER* msgf = (MSGFILTER*)pResult;
spellchecker_process ((HWND)pwndBody, msgf);
}
定义了处理程序:
ON_NOTIFY(NM_RCLICK, IDC_EDIT_OUTBOUND_BODY, OnSpellingError);
我在消息地图中提供了一个绑定:
WM_NOTIFY
因为我想在收到ON_NOTIFY
消息时调用spellchecker_process()函数,就像它在上面的WIN API CALLBACK函数中一样。
我是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函数。感谢