窗口子类化EDIT控件
发布时间:2017年12月12日 作者:未知 查看次数:1133
(VC6)新建默认的Win32 Application,在资源中建立IDD_MAIN对话框,对话框上建立IDC_EDIT1、IDC_EDIT2,其中IDC_EDIT1属性(Styles)将Multiline和Want return勾选。 修改代码: =================================== #include "stdafx.h" #include "resource.h" BOOL CALLBACK mTestProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); LRESULT CALLBACK mEditCldClassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); WNDPROC h_pOldEditProc; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { DialogBoxParam(hInstance,MAKEINTRESOURCE(IDD_MAIN),0,mTestProc,NULL); return 0; } BOOL CALLBACK mTestProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) { RECT tRect; switch(message) { case WM_CLOSE: EndDialog(hDlg,NULL); break; case WM_INITDIALOG: h_pOldEditProc = (WNDPROC)::SetWindowLong(GetDlgItem(hDlg,IDC_EDIT1), GWL_WNDPROC,(LONG)mEditCldClassProc); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_BUTTON1: break; default: break; } break; default: return(FALSE); } return(TRUE); } LRESULT CALLBACK mEditCldClassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_KEYUP: { WORD wLow = LOWORD(wParam); switch(wLow) { case VK_RETURN: MessageBox(hWnd,"a","a",0); break; default: { char tBuf[22]; GetDlgItemText(GetParent(hWnd),IDC_EDIT1,tBuf,20); SetDlgItemText(GetParent(hWnd),IDC_EDIT2,tBuf); } break; } } break; default: break; } //传递默认消息处理函数 return CallWindowProc(h_pOldEditProc,hWnd, uMsg, wParam, lParam); // return h_pOldSmsEditProc(hWnd, uMsg, wParam, lParam); } ===================================
|
|
|