FARPROC OldEditProc = NULL;
LRESULT CALLBACK NewEditProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
if (uMsg == WM_RBUTTONUP)
{
CPoint curPoint;
GetCursorPos(&curPoint);
CMenu Menu,*pSubMenu;
Menu.LoadMenu(IDR_MENU);
pSubMenu=Menu.GetSubMenu(0);
TrackPopupMenu(pSubMenu->GetSafeHmenu(),TPM_LEFTALIGN,curPoint.x,curPoint.y,0,AfxGetMainWnd()->GetSafeHwnd(),NULL);// 不要忘了指定处理消息的窗口句柄
return TRUE;
}
else
{
if(OldEditProc)
{
return CallWindowProc((WNDPROC)OldEditProc,hwnd,uMsg,wParam,lParam);
}
else
{
return FALSE;
}
}
}
在OnInitDialog函数里面添加如下代码:
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_LOG); // 为IDC_EDIT_LOG设置新的窗口过程
if(pEdit)
{
OldEditProc = (FARPROC)SetWindowLong(pEdit->m_hWnd,GWL_WNDPROC,long(NewEditProc));//更换窗口过程函数
}