⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multilineedit.h

📁 Windows Mobile 手机短信订购软件源程序
💻 H
字号:
#ifndef _MULTILINE_EDIT_
#define _MULTILINE_EDIT_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CMultiLineEdit: 
	public CWindowImpl< CMultiLineEdit, CEdit, CControlWinTraits >
{
public:

	DECLARE_WND_CLASS(CEdit::GetWndClassName());  

	BEGIN_MSG_MAP(CMultiLineEdit)
		MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
	END_MSG_MAP()
public:

	BOOL SubclassWindow(HWND hWnd)
	{
		ATLASSERT(m_hWnd == NULL);
		ATLASSERT(::IsWindow(hWnd));
		BOOL bRet = CWindowImpl< CMultiLineEdit, CEdit, CControlWinTraits >::SubclassWindow(hWnd);
		return bRet;
	}

	LRESULT OnKeyDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		// TODO : Add Code for message handler. Call DefWindowProc if necessary.
        int nLineNo = LineIndex();
        nLineNo =1 + LineFromChar(nLineNo);
        int nMaxLine = GetLineCount();
		int nCaretPos = (int) HIWORD(GetSel());
		if(VK_TUP == (int) wParam) 
		{
			if (nCaretPos == 0) {
				::SendMessage(GetParent(),WM_NEXTDLGCTL, 1, FALSE);
			} else if ( nLineNo == 1) {
				// set caret to first char
				SetSel(0,0);
			} else {
				DefWindowProc(uMsg,wParam,lParam);
			}
		}
        else if(VK_TDOWN == (int)wParam)
		{
			LPTSTR pszText = new TCHAR[(nMaxLine+1)*100];
			GetWindowText(pszText,(nMaxLine+1)*100-1);
	
			int nTextLen = _tcslen(pszText);
			if( nCaretPos == nTextLen) {
				::SendMessage(GetParent(),WM_NEXTDLGCTL, 0, FALSE);
			} else if (nLineNo == nMaxLine) {
				SetSel(nTextLen,nTextLen);
			} else {
				DefWindowProc(uMsg,wParam,lParam);
			}
			delete pszText;
		}
        else 
            DefWindowProc(uMsg,wParam,lParam);
		return 0;
	}
};




#endif //_MULTILINE_EDIT_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -