/*******************************************************************************Author : Aravindan PremkumarUnregistered Copyright 2003 : Aravindan PremkumarAll Rights ReservedThis piece of code does not have any registered copyright and is free to beused as necessary. The user is free to modify as per the requirements. As afellow developer, all that I expect and request for is to be given thecredit for intially developing this reusable code by not removing my name asthe author.*******************************************************************************/#include "stdafx.h"#include "InPlaceEdit.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif#define CTRL_C 0x3#define CTRL_V 0x16#define CTRL_X 0x18/////////////////////////////////////////////////////////////////////////////// CInPlaceEditCInPlaceEdit* CInPlaceEdit::m_pInPlaceEdit = NULL;CInPlaceEdit::CInPlaceEdit(){m_iRowIndex= -1;m_iColumnIndex = -1;m_bESC = FALSE;m_strValidChars.Empty();}CInPlaceEdit::~CInPlaceEdit(){}BEGIN_MESSAGE_MAP(CInPlaceEdit, CEdit)//{{AFX_MSG_MAP(CInPlaceEdit)ON_WM_KILLFOCUS()ON_WM_CHAR()ON_WM_CREATE()//}}AFX_MSG_MAP// ON_MESSAGE(WM_PASTE, OnPaste)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CInPlaceEdit message handlers/*void CInPlaceEdit::OnPaste(WPARAM , LPARAM ){if (m_strValidChars.IsEmpty()){return;}CString strFromClipboard;// get the text from clipboardif(OpenClipboard()) {HANDLE l_hData = GetClipboardData(CF_TEXT);if(NULL == l_hData) {return;}char *l_pBuffer = (char*)GlobalLock(l_hData);if(NULL != l_pBuffer) {strFromClipboard = l_pBuffer;}GlobalUnlock(l_hData);CloseClipboard();}// Validate the characters before pastingfor(int iCounter_ = 0; iCounter_ < strFromClipboard.GetLength(); iCounter_++){if (-1 == m_strValidChars.Find(strFromClipboard.GetAt(iCounter_))){return;}}//let the individual control handle other processingCEdit::Default();}*/void CInPlaceEdit::OnKillFocus(CWnd* pNewWnd){CEdit::OnKillFocus(pNewWnd);// TODO: Add your message handler code here// Get the text in the edit ctrlCString strEdit;GetWindowText(strEdit);// Send Notification to parent of edit ctrlLV_DISPINFO dispinfo;dispinfo.hdr.hwndFrom = GetParent()->m_hWnd;dispinfo.hdr.idFrom = GetDlgCtrlID();dispinfo.hdr.code = LVN_ENDLABELEDIT;dispinfo.item.mask = LVIF_TEXT;dispinfo.item.iItem = m_iRowIndex;dispinfo.item.iSubItem = m_iColumnIndex;dispinfo.item.pszText = m_bESC ? LPTSTR((LPCTSTR)m_strWindowText) : LPTSTR((LPCTSTR)strEdit);dispinfo.item.cchTextMax = m_bESC ? m_strWindowText.GetLength() : strEdit.GetLength();GetParent()->SendMessage(WM_NOTIFY, GetParent()->GetDlgCtrlID(), (LPARAM)&dispinfo);PostMessage(WM_CLOSE);}void CInPlaceEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){// TODO: Add your message handler code here and/or call defaultif ((m_strValidChars.IsEmpty()) || ((-1 != m_strValidChars.Find(static_cast<TCHAR> (nChar))) ||(nChar == VK_BACK) || (nChar == CTRL_C) || (nChar == CTRL_V) || (nChar == CTRL_X))){CEdit::OnChar(nChar, nRepCnt, nFlags);}else{MessageBeep(MB_ICONEXCLAMATION);return;}}BOOL CInPlaceEdit::PreTranslateMessage(MSG* pMsg){// TODO: Add your specialized code here and/or call the base classif (WM_KEYDOWN == pMsg->message && (VK_ESCAPE == pMsg->wParam || VK_RETURN == pMsg->wParam)){if (VK_ESCAPE == pMsg->wParam){m_bESC = TRUE;}GetParent()->SetFocus();return TRUE;}return CEdit::PreTranslateMessage(pMsg);}int CInPlaceEdit::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CEdit::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code here// Set the proper fontCFont* pFont = GetParent()->GetFont();SetFont(pFont);ShowWindow(SW_SHOW);SetWindowText(m_strWindowText);SetSel(0, -1);SetFocus();return 0;}CInPlaceEdit* CInPlaceEdit::GetInstance(){if(m_pInPlaceEdit == NULL){m_pInPlaceEdit = new CInPlaceEdit;}return m_pInPlaceEdit;}void CInPlaceEdit::DeleteInstance(){delete m_pInPlaceEdit;m_pInPlaceEdit = NULL;}BOOL CInPlaceEdit::ShowEditCtrl(DWORD dwStyle, const RECT &rCellRect, CWnd* pParentWnd,UINT uiResourceID, int iRowIndex, int iColumnIndex,CString& strValidChars, CString& rstrCurSelection){m_iRowIndex = iRowIndex;m_iColumnIndex = iColumnIndex;m_strValidChars = strValidChars;m_strWindowText = rstrCurSelection;m_bESC = FALSE;if (NULL == m_pInPlaceEdit->m_hWnd){return m_pInPlaceEdit->Create(dwStyle, rCellRect, pParentWnd, uiResourceID);}return TRUE;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。