ctrl+v怎么拦截 ----------------------- switch(uMsg) { case WM_KEYDOWN: if(wParam=='V' && GetKeyState(VK_CONTROL)&0x80) return; //直接返回,阻止当前操作 break; default: break; }
switch(uMsg) { case WM_KEYDOWN: if(wParam=='V' && GetKeyState(VK_CONTROL)&0x80) return; //直接返回,阻止当前操作 break; default: break; }
提醒:粘贴还可以用Shift+Ins
子类化 这个 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); }
15,980
社区成员
115,867
社区内容
加载中
试试用AI创作助手写篇文章吧