您的位置:首页 > 其它

winCE Edit Control 复制/粘贴

2010-05-15 13:36 309 查看
winCE Edit Control 复制/粘贴

--作者:赖玉平(aulyp@163.com)

在windows CE里MFC写程序,Edit Control控件使用得非常频繁,但是,默认情况下,你在该控件上输入的内容,是不支持复制粘贴的,也没有右键菜单,极为不方便,在google上找了没什么这方面的详细资料,只能看E文的帮助文档了,其实实现起来也不难,下面是步骤,分享一下方便后来者。
1)在PreTranslateMessage 中响应WM_RBUTTONDOWN 消息。(关于如何在MFC里重载PreTranslateMessage,可以看我另一篇博客),因为
BOOL NewSMSDlg::PreTranslateMessage(MSG* pMsg)
{
DWORD regValue;
BOOL bPROCES;
// static BOOL COM7STATE;
switch(pMsg->message)
{
case WM_RBUTTONUP:/*Right Click message*/
{
if(GetFocus()==GetDlgItem(IDC_EDIT_NEWWrite))//判断焦点在不在框内
{
RETAILMSG(1,(TEXT("right BUTTON /r/n")));
POINT pt = {0};
GetCursorPos(&pt);//得到鼠标点击位置
//------生成对应的菜单---------------------------
CMenu menu;
menu.CreatePopupMenu(); //生成菜单对象
menu.AppendMenu(MF_STRING,ContentEditCopy,L"复制");
menu.AppendMenu(MF_STRING,ContentEditPaste,L"粘贴");
menu.TrackPopupMenu(0,pt.x,pt.y,this);//pListCtrl
menu.DestroyMenu();
}
}
break;
default:break;
}
return CDialog::PreTranslateMessage(pMsg);
}


2) 响应菜单事件
MFC里菜单消息,都在OnCommand里处理,重载OnCommand函数,具体方法是,打开你EditControl控件所在的对话窗的头文件,然后把鼠标焦点在类里面,查看“属性”窗口,

如图:



然后在OnCommand里处理菜单操作,例如复制/粘贴

BOOL NewSMSDlg::OnCommand(WPARAM wParam, LPARAM lParam)

{

int menuID = LOWORD(wParam);

switch(menuID)

{

case ContentEditCopy:  //复制

{

::SendMessage(GetDlgItem(IDC_EDIT_NEWWrite)->GetSafeHwnd(), WM_COPY, 0, 0);

break;

}

case ContentEditPaste: //粘贴

{

::SendMessage(GetDlgItem(IDC_EDIT_NEWWrite)->GetSafeHwnd(), WM_PASTE, 0, 0);

break;

}

default:break;

}

return CDialog::OnCommand(wParam, lParam);

}


到这里,你程序中的EditControl控件就能实现复制、粘贴功能了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: