在vc6里利用MFC建立OCX工程,该OCX包含很多CFormView,做好后才发现TAB键在OCX里的FormView不起作用,于是添加如下代码:
HHOOK hHook = NULL;
LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( )); LPMSG lpMsg = (LPMSG) lParam;
if( (nCode >= 0) &&
PM_REMOVE == wParam &&
(lpMsg->message >= WM_KEYFIRST && lpMsg->message <= WM_KEYLAST) &&
AfxGetApp()->PreTranslateMessage((LPMSG)lParam) )
{
lpMsg->message = WM_NULL;
lpMsg->lParam = 0L;
lpMsg->wParam = 0;
}
return ::CallNextHookEx(hHook, nCode, wParam, lParam);
}CMyCtrl::CMyCtrl()
{
InitializeIIDs(&IID_DPreVersionZXD, &IID_DPreVersionZXDEvents); hHook = ::SetWindowsHookEx(
WH_GETMESSAGE,
GetMessageProc,
AfxGetInstanceHandle(),
GetCurrentThreadId());
ASSERT (hHook);
}之后,TAB键起作用了,可是发现令一个问题了,就是在FormView里的编辑框输入中文的时候,出现的是乱码!!!
不知道是什么原因?该如何解决,恳请请大家帮忙!
HHOOK hHook = NULL;
LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState( )); LPMSG lpMsg = (LPMSG) lParam;
if( (nCode >= 0) &&
PM_REMOVE == wParam &&
(lpMsg->message >= WM_KEYFIRST && lpMsg->message <= WM_KEYLAST) &&
AfxGetApp()->PreTranslateMessage((LPMSG)lParam) )
{
lpMsg->message = WM_NULL;
lpMsg->lParam = 0L;
lpMsg->wParam = 0;
}
return ::CallNextHookEx(hHook, nCode, wParam, lParam);
}CMyCtrl::CMyCtrl()
{
InitializeIIDs(&IID_DPreVersionZXD, &IID_DPreVersionZXDEvents); hHook = ::SetWindowsHookEx(
WH_GETMESSAGE,
GetMessageProc,
AfxGetInstanceHandle(),
GetCurrentThreadId());
ASSERT (hHook);
}之后,TAB键起作用了,可是发现令一个问题了,就是在FormView里的编辑框输入中文的时候,出现的是乱码!!!
不知道是什么原因?该如何解决,恳请请大家帮忙!
可不可以试试如果你不用中文,用英语, 为出现乱码?