实现这样的小键盘。
- 首先,对话框中有这样的一个带 图标按钮的edit:
实现这样一个带图标按钮的edit的效果,可参考 郭延明 博客中自绘类 CSkinEdit的实现。
- 我们想实现的效果是:点击icon时弹出小键盘,点击键盘外的别处或者点击键盘上的关闭按钮时,键盘消失。
涉及到三个窗口:edit,edit所在的dlg,小键盘。
处理过程:
edit的OnNcLButtonUp中发给 dlg 自定义的键盘消息UM_NUMKEYBOARDABC,
dlg中响应自定义消息UM_NUMKEYBOARDABC,调出小键盘。 - OnNcLButtonUp中的代码:
void CSkinEdit::OnNcLButtonUp(UINT nHitTest, CPoint point)
{
CWnd *pWnd = GetParent();
if ( pWnd != NULL && pWnd->GetSafeHwnd() != NULL )
{
CRect rcIcon;
CPoint pt;
GetCursorPos(&pt);
GetIconRect(rcIcon);
if (PtInRect(&rcIcon, pt))
{
pWnd->PostMessage(WM_COMMAND, GetDlgCtrlID());
if (0 == keyBoardState)
::SendMessage(GetParent()->m_hWnd, UM_NUMKEYBOARDABC, (WPARAM)this, (LPARAM)&CPoint(rcIcon.right - 200, rcIcon.bottom));
else if (1 == keyBoardState)</