当前位置: 代码迷 >> VC/MFC >> 非MFC下如其让edit不能粘贴
  详细解决方案

非MFC下如其让edit不能粘贴

热度:182   发布时间:2016-05-02 03:42:15.0
非MFC下如果让edit不能粘贴
rt。
没有用MFC。使用了WndProcess,怎么让edit不能粘贴呢?

焦点进入edit中,就拦截不到WM_RBUTTONUP了
------解决思路----------------------
子类化 这个 Edit

m_hEdit=CreateEdit(hwnd);
WNDPROC EdOldProc = (WNDPROC)SetWindowLong(m_hEdit, GWL_WNDPROC, (LONG)EDProc);
SetProp(m_hEdit,// handle of window
"EditOldProc",  // atom or address of string
EdOldProc);
、、
LRESULT CALLBACK EDProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{// get oldproc
WNDPROC OldEdProc=(WNDPROC)GetProp(hWnd,"EditOldProc");
char buf[100]= {0};
switch(Msg)
    {
case WM_NOTIFY:
// OutputDebugString("notify\n");
break;
case WM_KEYDOWN:
OutputDebugString("WM_KEYDOWN\n");
break;
case WM_KEYUP:
OutputDebugString("WM_KEYUP\n");
break;
case WM_CHAR:
if((TCHAR) wParam==VK_RETURN)
{
CallWindowProc(OldEdProc, hWnd, Msg, wParam, lParam);
POINT pt;
DWORD pos;
int idx;
// insert the indent 
GetCaretPos(&pt);
pos=SendMessage(hWnd,EM_CHARFROMPOS,0,MAKELPARAM(pt.x, pt.y));
idx=LOWORD(pos);
SendMessage(hWnd,EM_SETSEL,idx,idx);
SendMessage(hWnd,EM_REPLACESEL,0,(LPARAM)"    ");
return 0;
}
break;
}
return CallWindowProc(OldEdProc, hWnd, Msg, wParam, lParam);
}

------解决思路----------------------
HWND CreateEdit(HWND parentWnd)
{
HWND hEd=0;
hEd = CreateWindow("EDIT",
                NULL,
                WS_CHILD 
------解决思路----------------------
 WS_TABSTOP 
------解决思路----------------------
 WS_VISIBLE 
------解决思路----------------------
 WS_BORDER 
------解决思路----------------------
 WS_VSCROLL 
------解决思路----------------------
WS_HSCROLL 
------解决思路----------------------

ES_AUTOVSCROLL 
------解决思路----------------------
 ES_AUTOHSCROLL
------解决思路----------------------
 ES_MULTILINE 
------解决思路----------------------
 ES_WANTRETURN,
                4, 250, 300, 80, 
                parentWnd, (HMENU)IDC_EDIT, 
                (HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE), 
                NULL);
SetWindowText(hEd,"    An Edit with ES_MULTILINE and ES_WANTRETURN style!");
//
return hEd;
}

------解决思路----------------------
提醒:粘贴还可以用Shift+Ins
  相关解决方案