我用CEdit类的Create函数在一般的窗口里创建一个文本编辑子窗口,但不知如何实现Ctrl+V、Ctrl+C、Ctrl+X(粘贴、复制、剪切)的功能,请各个朋友指点。
解决方案 »
- 哪位有编译成功?chrome源码?
- ListControl控件的一个小问题
- 散分
- 如何在运行时重新触发最大化按钮??
- 属性页指定了PSH_WIZARD97和PSH_WATERMARK,为什么显示的图片是平铺到整个窗口的?
- :::::::::::::::::::::::::::::::::::::::::::::::::::::VC++6.0的明天::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- 200分高手指点: 非模式对话框销毁时,父窗体如何获知?
- CTabCtrl怎么去掉左右移动的标签?
- windows2008上服务创建的进程不能显示界面问题。
- Creport 用GetItemData 怎么获取选中行的数据
- 300高分求助,一个小算法,要代码。
- 求助:有关线程发数据包的问题
我也没试成功过,只有一个办法
将主框架中的Ctrl+C,Ctrl+v屏蔽,或者重载OnCmdMsg()
{
// if(WM_RBUTTONDOWN == pMsg->message)
// return true;
/* if(WM_KEYDOWN == pMsg->message)
{
int nState = GetKeyState(VK_CONTROL);
if(nState < 0)
{
int ch = (int) pMsg->wParam ;
if('x' == ch || 'X' == ch)
::SendMessage(GetDlgItem(IDC_EDIT1)->GetSafeHwnd(),WM_CUT,ID_EDIT_CUT,0);
if('C' == ch || 'c' == ch)
::SendMessage(GetDlgItem(IDC_EDIT1)->GetSafeHwnd(),WM_COPY,ID_EDIT_CUT,0);
if('v' == ch || 'V' == ch)
::SendMessage(GetDlgItem(IDC_EDIT1)->GetSafeHwnd(),WM_PASTE,ID_EDIT_CUT,0);
}
}
return CFormView::PreTranslateMessage(pMsg);*/
UINT nKeyCode = pMsg->wParam; // virtual key code of the key pressed
if (pMsg->message == WM_KEYDOWN)
{
if ( (nKeyCode == _T('C') || nKeyCode == _T('X')
|| nKeyCode == _T('V')) &&
(::GetKeyState(VK_CONTROL) & 0x8000) )
{
::TranslateMessage(pMsg);
::DispatchMessage(pMsg);
return(TRUE);
}
}
return CFormView::PreTranslateMessage(pMsg);
}