📄 jngroupedit.cpp
字号:
#include "stdafx.h"
#include "Prog.h"
#include "JnGroupEdit.h"
#include "JnOutBar.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// JnGroupEdit
JnGroupEdit::JnGroupEdit()
{
bEscapeKey = FALSE;
iIndex = -1;
msgSend = NM_OB_ONGROUPENDEDIT;
bNoDown = false;
}
JnGroupEdit::~JnGroupEdit()
{
}
BEGIN_MESSAGE_MAP(JnGroupEdit, CEdit)
//{{AFX_MSG_MAP(JnGroupEdit)
ON_WM_KILLFOCUS()
ON_WM_CREATE()
ON_WM_CHAR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// JnGroupEdit message handlers
void JnGroupEdit::OnKillFocus(CWnd* pNewWnd)
{
PostMessage(WM_CLOSE, 0, 0);
if (!bEscapeKey)
{
GetWindowText(text);
if (text != "") GetOwner()->SendMessage(WM_OUTBAR_NOTIFY, msgSend, (LPARAM) this);
}
}
BOOL JnGroupEdit::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->wParam == VK_RETURN)
{
PostMessage(WM_CLOSE, 0, 0);
return TRUE;
}
else if (pMsg->wParam == VK_ESCAPE)
{
PostMessage(WM_CLOSE, 0, 0);
return bEscapeKey = TRUE;
}
return CEdit::PreTranslateMessage(pMsg);
}
void JnGroupEdit::PostNcDestroy()
{
CEdit::PostNcDestroy();
delete this;
}
int JnGroupEdit::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CEdit::OnCreate(lpCreateStruct) == -1)
return -1;
SendMessage(WM_SETFONT,(WPARAM) GetStockObject(DEFAULT_GUI_FONT),MAKELPARAM(TRUE,0));
return 0;
}
void JnGroupEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if (msgSend == NM_OB_ONGROUPENDEDIT)
{
CEdit::OnChar(nChar, nRepCnt, nFlags);
return;
}
if (nChar == VK_ESCAPE || nChar == VK_RETURN)
{
if (nChar == VK_ESCAPE) bEscapeKey = TRUE;
GetParent()->SetFocus();
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
CString str;
CRect rect, parentrect;
GetClientRect(&rect);
GetParent()->GetClientRect(&parentrect);
ClientToScreen(&rect);
GetParent()->ScreenToClient(&rect);
GetWindowText(str);
CWindowDC dc(this);
CFont *pFont = GetParent()->GetFont();
CFont *pFontDC = dc.SelectObject(pFont);
CRect szrc(rect);
szrc.bottom = szrc.top;
if (bNoDown == true)
{
dc.DrawText(str, szrc, DT_CALCRECT);
if (szrc.right >= parentrect.right - 1)
rect.right = parentrect.right - 1;
else
rect.right = szrc.right;
MoveWindow(&rect);
return;
}
dc.DrawText(str, szrc, DT_WORDBREAK|DT_CENTER|DT_CALCRECT);
dc.SelectObject(pFontDC);
CSize size = szrc.Size();
if (size.cx > rect.Width())
{
if (size.cx + rect.left < parentrect.right)
rect.right = rect.left + size.cx;
else
rect.right = parentrect.right;
MoveWindow(&rect);
}
else if (size.cy > rect.Height())
{
if (size.cy + rect.bottom < parentrect.bottom)
rect.bottom = rect.top + size.cy;
else
rect.bottom = parentrect.bottom;
MoveWindow(&rect);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -