我想实现这样一个功能:
建立一个CEdit的派生类myEdit
在状态栏中创建一个myEdit,回车时能够做出响应 现在:
建立的派生类中如何检测回车,我已经试过了OnChar,OnKeyDown了 不好使
我把期望做出响应回车的函数写在了CMainFrame中
在myEdit中定义了#define message WM_USER+10
期望在myEdit中检测到回车时就SendMessage(message)上述思路可行么?我却没有做出来。
请明白人赐教。
建立一个CEdit的派生类myEdit
在状态栏中创建一个myEdit,回车时能够做出响应 现在:
建立的派生类中如何检测回车,我已经试过了OnChar,OnKeyDown了 不好使
我把期望做出响应回车的函数写在了CMainFrame中
在myEdit中定义了#define message WM_USER+10
期望在myEdit中检测到回车时就SendMessage(message)上述思路可行么?我却没有做出来。
请明白人赐教。
BOOL CMyEdit::PreTranslateMessage(MSG *pMsg)
{
if (pMsg->message==WM_KEYDOWN && (pMsg->wParam==VK_RETURN))
{
ParseLine(pMsg);// }
}
void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if(m_CommandEdit)//m_CommandEdit是一个CEdit
{
m_CommandEdit.OnChar(nChar,nRepCnt,nFlags);
m_CommandEdit.SetFocus();
return;
}
}
你可以在View中重载OnChar函数,捕获按键消息,再调用你的Edit类中的OnChar,
PreTranslateMessage 函数处理按键消息。(^_^,写得有点乱,不好意思)
void CMyView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CMyEdit*pEdit=(CMyEdit*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(ID_VIEW_MYEDIT);
if(pEdit)
{
pEdit->OnChar(nChar, nRepCnt, nFlags);
return;
}
}
{
if(pMsg->wParam == VK_RETURN)
{
CWnd* pWnd = GetFocus();
if(pWnd != NULL)
{
if(pWnd->GetDlgCtrlID() == 编辑框id)
PostMessage();
}
}
}return CFrameWnd::PreTranslateMessage(pMsg);